본문 바로가기
Excel

SortBy 함수 - by_array(정렬 기준 배열에 의한) 정렬

by 별동산 2023. 8. 16.
반응형

sortby함수.xlsx
0.01MB

 

 

 

 

1. 의미

정렬할 범위를 지정한 다음, Xlookup 함수와 유사하게 정렬 기준 항목과 정렬 순서를 지정해서 정렬하는 것입니다.

 

Sort 함수의 경우는 sort_index(정렬 순번, 정렬 기준 항목)라고 숫자로 지정하는데, SortBy함수는 정렬 기준 항목을 열 전체로 지정하고, 정렬 순서를 순서대로 지정하는 것이 다릅니다.

 

2. 구문

=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],…) 

 

첫 번째 인수인 array(정렬할 배열 또는 범위)와

두 번째 인수인 by_array1(정렬 기준 1인 배열 또는 범위)만 필수적인 요소이며,

 

세 번째 인수인 sort_order1(정렬 순서 1),

네 번째 인수인 by_array2(정렬 기준 2인 배열 또는 범위)와

다섯 번째 인수인 sort_order2(정렬 순서 2)는 선택적인 인수입니다.

 

그런데, 네 번째 인수와 다섯 번째 인수가 함께 선택적 인수이므로 입력할 때는 두 개를 같이 입력해야 하며, 하나만 입력하면 안 됩니다.

 

두 번째 인수는 행 방향(위쪽에서 아래쪽) 일 때는 1열,

열 방향(왼쪽에서 오른쪽) 일 때는 1행이어야 합니다.

 

sort_order은 Sort 함수와 같이 1은 오름차순, -1은 내림차순입니다.

 

 

3. 사용 예

 

가. Sort함수와 SortBy함수의 비교

 

(1) Sort 함수

첫 번째 인수인 정렬 범위만 필수적인 요소이고, 두 번째 인수인 sort_index(정렬 순번, 정렬 기준 항목)은 옵션으로 기본값이 1이 됩니다.

 

(2) SortBy 함수

첫 번째 인수인 정렬 범위(array)와 두 번째 인수인  정렬 기준 범위 및 배열(by_array)은 필수적인 요소입니다.

따라서 위와 같은 결과를 얻으려면

=SORTBY(A2:D17,A2:A17)라고, 두 번째 인수까지는 반드시 입력해야 합니다.

 

또한 Sort함수와 같이 머리글은 A1셀부터 D1셀의 내용을 복사해서 K1셀에 붙여 넣어야 합니다.

 

 

나. SortBy함수로 세 개 인수 입력 예

F열부터 N열까지 선택한 후 열 경계선을 더블 클릭해서 열 너비를 자동 조절하고,

i열과 n열만 선택한 후 홈 탭 표시 형식 그룹에서 ,(쉼표)를 클릭해서 천 단위 구분 기호를 삽입니다.

 

그리고, K2셀에 =SORTBY(A2:D17,A2:A17,-1)라고 입력하면

정렬할 범위는 A2:D17이고,

정렬 기준은 A2셀에서 A17까지인 지역이 되고,

정렬 순서는 내림차순이 됩니다.

 

다. SortBy함수로 네 개 인수를 입력하면 에러 발생

K2셀에 =SORTBY(A2:D17,A2:A17,-1,d2:d17)라고, 네 번째 인수까지만 입력하면 '이 함수에 대해 너무 적은 인수를 입력했다'는 에러 메시지가 표시됩니다. 따라서, 확인 버튼을 누르고, 네 번째 인수를 입력했을 때는 짝인 다섯 번째 인수까지 입력해야 합니다.

sortby 함수 - 너무 적은 인수 입력

 

 

라. SortBy함수로 다섯 개 인수 입력 예

=SORTBY(A2:D17,A2:A17,-1,D2:D17,1)

라고 다섯 개 인수를 모두 입력하면

 

정렬할 범위는 A2:D17이고,

정렬 기준은 2개인데, 지역이 1차 정렬 기준, 판매량이 2차 정렬 기준이 되며,

지역은 내림차순, 판매량을 오름차순으로 정렬됩니다.

 

마. 열 방향 정렬

Sort함수의 경우는 두 번째, 세 번째 인수는 생략하고, 네 번째 인수로 TRUE라고,

P2셀에 =sort(a1:d17,,,True)

라고 입력하면 열 방향 정렬이 되는데,

Sort함수의 열 방향 정렬

 

SortBy함수의 경우는 정렬 기준을 열로 지정해야 하므로

P2셀에 =sortby(a1:d17,a1:d1)로 입력해야 합니다.

SortBy함수의 열 방향 정렬
열 방향 정렬

 

바. 정렬 기준을 인덱스 번호인 숫자로 입력하면 안 됨

=SORTBY(A1:D17,1)라고 두 번째 인수를 Sort함수와 같이 sort_index로 입력하면 #VALUE! 에러가 발생합니다.

by_array1이 범위 또는 배열이 아니어서 에러 발생

 

사. by_array1...n은 1열 또는 1행이어야지 2개 이상이면 에러 발생

행 방향을 기준으로 할 때는 1 열이어야 하며,

열 방향을 기준으로 할 때는 1행이어야 합니다.

 

따라서 =SORTBY(A2:D17,A2:D17)라고 정렬 기준을 4열로 지정하면 #VALUE! 에러가 발생합니다.

당연히 1열씩 여러 번 지정하는 것은 괜찮습니다.

SortBy함수의 by_array1 인수가 1열이 아님
by_array1이 1열이 아니라 4열이라서 에러 발생

 

아. sort_order1...n을 생략 가능, 그러면 오름차순이 됨

P2셀에 =SORTBY(A2:D17,A2:A17,,D2:D17,)라고 정렬 순서를 생략할 수 있습니다.

 

 

=SORTBY(A2:D17,A2:A17,,D2:D17)라고,

D2:D17 다음에 쉼표가 없으면 '너무 적은 인수를 입력했다'는 에러 메시지가 표시되는데 위에서 설명했습니다.

sortby 함수 - 너무 적은 인수 입력

 

sortby함수(완성).xlsx
0.01MB

 

반응형