직원 명단을 입사일 순으로 정렬해야 하는데, 화면에는 이름만 보여주고 싶다고 해보자. "이름을 정렬"하는 게 아니라 "입사일을 기준으로, 이름을 줄 세우는" 것이다. 이 미묘한 차이를 구분하지 못하면 SORT와 SORTBY 중 무엇을 써야 할지 자꾸 헷갈리게 된다. 이번 글에서는 이 둘의 차이를 '정렬 대상'과 '정렬 기준'을 분리해서 생각하는 관점으로 풀어본다.
SORT — 정렬 대상 자체가 기준이 되는 가장 단순한 경우
=SORT(A2:A100)SORT의 가장 기본적인 형태는 정렬하고 싶은 범위 자체를 그대로 정렬 기준으로 삼는다. A열의 값을 A열의 값 순서대로 줄 세우는 것이니, 대상과 기준이 같은 열이다. 여러 열로 이루어진 표를 정렬할 때도, 몇 번째 열을 기준으로 삼을지 지정할 수 있다.
=SORT(A2:D100, 3, -1)이 수식은 A2:D100 전체 표를, 세 번째 열(C열) 기준으로 내림차순(-1) 정렬한다. 여기까지는 '기준이 되는 열도 결국 정렬 대상 표 안에 포함되어 있다'는 점에서 SORT 하나로 충분하다.
SORTBY — 대상과 기준을 완전히 분리하기
그런데 앞서 예로 든 것처럼 "이름만 보여주되, 입사일 기준으로 줄 세우고 싶다"면 이야기가 달라진다. 보여줄 열(이름)과 기준으로 삼을 열(입사일)이 서로 다른 범위이기 때문이다. 이럴 때 쓰는 함수가 SORTBY다.
=SORTBY(A2:A100, C2:C100)이 수식은 "A2:A100(이름)을 보여주되, 정렬 순서는 C2:C100(입사일)을 기준으로 정한다"는 뜻이다. SORT가 "정렬할 표 안에서 몇 번째 열을 기준으로 삼을지"를 지정하는 구조였다면, SORTBY는 아예 "보여줄 것"과 "기준으로 삼을 것"을 처음부터 별개의 인수로 나눠 받는다는 점이 핵심적인 차이다.
SORT vs SORTBY 비교
| 구분 | SORT | SORTBY |
|---|---|---|
| 정렬 기준 | 정렬 대상 범위 안의 특정 열(번호로 지정) | 정렬 대상과 별개인 다른 범위(직접 지정) |
| 적합한 상황 | 기준 열이 결과에 포함되어도 상관없을 때 | 기준 열은 감추고 다른 값만 보여주고 싶을 때 |
| 다중 기준 | 지원(2차, 3차 기준 열 번호 추가) | 지원(기준 범위와 순서를 쌍으로 여러 개 추가) |
다중 기준 정렬
=SORTBY(A2:A100, B2:B100, 1, C2:C100, -1)부서(B열) 오름차순으로 먼저 묶고, 같은 부서 안에서는 입사일(C열) 내림차순으로 다시 정렬하고 싶을 때는 기준-순서 쌍을 이렇게 이어 붙이면 된다. 이때도 "무엇을 보여줄지"와 "무엇을 기준으로 삼을지"가 철저히 분리되어 있다는 원칙은 그대로 유지된다.
자주 하는 실수
SORTBY에서 보여줄 범위와 기준 범위의 행 개수가 다르면 오류가 발생한다. FILTER, SUMIF처럼 지금까지 다룬 여러 함수와 마찬가지로, 서로 짝지어지는 범위들은 크기가 항상 일치해야 한다는 원칙이 여기서도 반복된다.
Q. 오름차순, 내림차순은 어떻게 지정하나요?
1을 쓰면 오름차순, -1을 쓰면 내림차순이다. 생략하면 기본값인 오름차순으로 처리된다.
Q. 텍스트도 정렬 기준으로 쓸 수 있나요?
가능하다. 텍스트는 가나다순(또는 알파벳순)으로 정렬되며, 숫자·날짜와 동일한 방식으로 SORT·SORTBY의 기준 인수에 넣을 수 있다.
마무리
SORT와 SORTBY를 가르는 기준은 결국 "정렬 대상과 정렬 기준이 같은 표 안에 있는가, 아니면 서로 다른 범위인가"라는 한 가지 질문이다. 다음 글에서는 표시되는 값과 실제 저장된 값이 어떻게 분리되어 있는지, TEXT 함수와 서식 코드의 원리를 통해 살펴본다.