엑셀에서 범위의 데이터를 정렬하려면 다음과 같이 리본 메뉴에 있는 '정렬' 기능을 이용하여 원본데이터 자체를 정렬했지만...
엑셀 2021 이상 버전부터 제공되는 SORT 함수나 SORTBY 함수를 이용하면 원본 데이터를 손대지 않고 별도의 범위에 정렬된 결과를 표시할 수 있습니다.
SORTBY 함수는 SORT 함수와 유사하나 SORT 함수에 비해
- 출력결과에 포함되지 않은 범위를 정렬기준으로 설정할 수 있고,
- 정렬기준을 여러 개 지정할 수 있는
장점이 있습니다.
* 엑셀 2021 이상 버전에서는 데이터 메뉴에서 제공하던 기능을 다음과 같이 함수로 제공합니다.
구문(Syntax)
=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],…)
범위 또는 배열의 값을 기준으로 범위 또는 배열의 내용을 정렬한다.
인수 :
- array : 정렬할 범위 또는 배열
- by_array1 : 첫번째 정렬의 기준이 되는 배열 또는 범위
- [sort_order1] : 첫번째 정렬순서(오름차순은 1(기본값), 내림차순의 경우 -1)
- [by_array2] : 두번째 정렬의 기준이 되는 배열 또는 범위
- [sort_order2] : 두번째 정렬순서(오름차순은 1(기본값), 내림차순의 경우 -1)
사용예
1) 정렬기준을 포함하여 정렬범위 전체를 출력하기
다음과 같이 '거래처별 판매실적' 자료가 있다고 할 때 SORTBY 함수를 이용하여 '판매일자' 별로 오름차순(빠른 날짜가 앞에, 늦은 날짜가 뒤에 옴)으로 정렬해 보겠습니다.
[B17] 셀에 다음 수식을 입력합니다.=SORTBY(B6:E13,B6:B13,1)
수식이 입력되면 다음과 같이 정렬 결과가 표시됩니다.
수식을 풀이해 보면 다음과 같습니다.
※ SORTBY 함수는 여러 셀에 결과를 가져올 수 있는 동적 배열 함수입니다. 따라서 정렬된 결과를 범위로 가져오도록 지정했는데 가져올 범위에 이미 값이 있으면 다음과 같이 #SPILL! 오류가 발생하므로 결과를 가져올 범위가 비어 있어야 합니다.
2) 출력결과에 포함되지 않은 범위를 정렬기준으로 지정하기
위의 예는 정렬의 기준이 되는 범위를 포함하여 전체 범위가 출력되었는데, 이번에는 정렬 기준(판매일자)과 정렬결과 범위를 따로 지정하고 정렬결과를 출력해 보겠습니다.
[B39] 셀에 다음 수식을 입력합니다.=SORTBY(C6:E13,B6:B13,1)
수식이 입력되면 다음과 같이 정렬 결과가 표시됩니다.
수식을 풀이해 보면 다음과 같습니다.
정렬기준으로 사용할 범위와 출력할 범위를 따로 지정하고, 정렬기준으로 사용한 범위는 제외하고 결과를 가져왔습니다.
3) 여러 범위를 정렬기준으로 지정하기
마지막으로 판매일자를 첫 번째, 거래처명을 두 번째 정렬 기준으로 지정하고 정렬결과를 출력해 보겠습니다.
[B50] 셀에 다음 수식을 입력합니다.=SORTBY(B6:E13,B6:B13,1,C6:C13,1)
수식이 입력되면 다음과 같이 정렬 결과가 표시됩니다.
수식을 풀이해 보면 다음과 같습니다.
출력된 결과를 확인해 보면 '판매일자'순으로 첫번째로 정렬이 되고, '거래처명'기준으로 두번째로 정렬이 된것을 알 수 있습니다.