엑셀에는 다음과 같이 데이터를 정렬해주는 SORT 함수와 SORTBY 함수가 있습니다.
함수 | 정렬 기준 | 정렬 기준의 개수 | 기타 |
SORT | 정렬 기준이 되는 행, 열의 위치를 숫자로 지정 | 한 개만 가능 | 출력결과에 포함되지 않은 범위를 정렬기준으로 설정 가능 |
SORTBY | 정렬 기준을 범위로 지정 | 여러 개 가능 |
위 표에 나와 있는대로 SORT 함수는 정렬 기준을 여러 개 지정할 수 없는 단점이 있습니다.
SORTBY 함수로 여러 범위를 지정할 수도 있지만 SORTBY 함수를 사용할 수 없는 경우(예: FILTER 함수에 포함할 때)도 있기 때문에 배열을 사용해서 SORT 함수로 여러 기준으로 정렬하는 방법을 알아보겠습니다.
SORT 함수로 한 개 기준으로 정렬
SORT 함수는 정렬 기준으로 한 개만 지정 가능합니다.
다음과 같이 '거래처별 판매실적' 자료가 있다고 할 때 SORT 함수를 이용하여 '판매일자' 기준으로 오름차순(빠른 날짜가 앞에, 늦은 날짜가 뒤에 옴)으로 정렬해 보겠습니다.
[B18] 셀에 다음 수식을 입력합니다.=SORT(B6:E13,2,1)
수식 풀이:
=SORT(B6:E13,2,1)
SORT 함수의 두 번째 인수 sort_index를 2로 지정했으므로 두 번째 열인 '거래처명'으로 정렬되었습니다.
sort_index 인수 자체가 숫자 하나만 지정할 수 있으므로 하나의 기준으로만 정렬해야 하는 단점이 있습니다.
SORT 함수로 여러 기준 정렬(배열 사용)
SORT 함수의 두 번째 인수에 숫자 하나만 지정할 수 있는 단점은 배열을 사용하면 해결할 수 있습니다.
배열을 사용해서 거래처(오름차순), 판매금액(내림차순)으로 정렬해 보겠습니다.
[B30] 셀에 다음 수식을 입력합니다.=SORT(B6:E13,{2,4},{1,-1})
거래처명 기준으로 오름차순(작은 값이 앞에, 큰 값이 뒤로)으로 먼저 정렬된 후, 판매금액 기준으로 내림차순(큰 값이 앞에, 작은 값이 뒤로)으로 정렬된 것을 확인할 수 있습니다.
수식 풀이:
수식에서 {2,4}와 같이 중괄호 '}'로 된 부분이 배열입니다. 배열은 한 번에 중괄호 안의 항목의 개수만큼 수식이 실행된다고 이해를 하면 됩니다.
따라서 위 수식은 다음과 같이 SORT 함수가 두 번 실행됩니다.
=SORT(B6:E13,2,1,)
2번째 열(거래처)로 오름차순 정렬(1) 한 후
=SORT(B6:E13,4,-1,)
4번째 열(판매금액)로 내림차순 정렬(-1)한 결과를 보여줍니다.
※ 위의 예에서는 2개의 기준으로 정렬했지만 배열에 정렬 기준을 추가하여 원하는 개수대로 정렬할 수 있습니다.
=SORT(B6:E13,{2,4,1},{1,-1,1})
2번째 열(거래처)로 오름차순 정렬(1) 한 후
4번째 열(판매금액)로 내림차순 정렬(-1)하고
1번째 열(판매일자)로 오름차순 정렬(1)
=SORT(B6:E13,{2,4,1,3},{1,-1,1,1})
2번째 열(거래처)로 오름차순 정렬(1) 한 후
4번째 열(판매금액)로 내림차순 정렬(-1)하고
1번째 열(판매일자)로 오름차순 정렬(1)하고
3번째 열(상품)로 오름차순 정렬(1)
FILTER 함수의 결과를 SORT 함수로 정렬
FILTER 함수를 사용하면 조건에 따라 원하는 결과를 가져올 수 있는데, 가끔 가져온 결과를 정렬해야 하는 경우가 있습니다. 이런 경우에는 SORT 함수를 사용하면 편리합니다.
거래처별 판매실적 자료에서 FILTER 함수로 상품이 '노트'인 것만 골라낸 후 SORT 함수로 판매일자(오름차순)로 정렬해 보겠습니다.
[B42] 셀에 다음 수식을 입력합니다.=SORT(FILTER(B6:E13,(D6:D13="노트")),1,1)
수식 풀이:
=SORT(FILTER(B6:E13,(D6:D13="노트")),1,1)
- 수식의 안쪽의 FILTER 함수로 먼저 상품이 '노트'인 것만 골라낸 후
- SORT 함수의 두 번째 인수 sort_index를 1로 지정했으므로 첫번째 열 '판매일자'로 정렬하되
세 번째 인수 sort_order를 1로 지정했으므로 오름차순으로 정렬됩니다.
FILTER 함수의 결과를 SORT 함수로 여러 기준 정렬(배열 사용)
이번에는 FILTER 함수로 상품이 '노트'인 것만 골라내고 거래처(오름차순), 판매금액(내림차순)으로 정렬해 보겠습니다.
[B50] 셀에 다음 수식을 입력합니다.=SORT(FILTER(B6:E13,(D6:D13="노트")),{2,4},{1,-1})
수식 풀이:
=SORT(FILTER(B6:E13,(D6:D13="노트")),{2,4},{1,-1})
수식에서 {2,4}와 같이 중괄호 '}'로 된 부분이 배열입니다. 배열을 사용하면 한 번에 중괄호 안의 항목의 개수만큼 수식이 실행된다고 이해를 하면 됩니다.
따라서 위 수식은 다음과 같이 SORT 함수가 두 번 실행됩니다.
=SORT(FILTER함수의 결과범위,2,1,)
2번째 열(거래처)로 오름차순 정렬(1) 한 후
=SORT(FILTER함수의 결과범위,4,-1,)
4번째 열(판매금액)로 내림차순 정렬(-1)한 결과를 보여줍니다.
관련 글


