5. Sort 함수 인수 입력 방법
가. array : 배열 또는 범위
(1) 범위 내 Sort 함수를 입력하면 순환 참조 발생
Sort 함수는 함수이므로 데이터 영역에 작성하면, 다시 말해 A2셀에 =sort(a2:d17)이라고 입력하고 엔터키를 누르면 순환참조 에러가 발생하며, '수식을 다른 셀로 이동하세요'라고 해결방법을 알려줍니다. 확인 버튼을 누릅니다.
그러면 A2셀에 수식이 들어가고, 값이 0으로 표시되는데,
빠른 실행 도구 모음에서 입력 취소 아이콘을 누르거나, 단축키 Ctrl + Z를 누릅니다.
(2) 머리글 포함 지정하면 머리글까지 정렬 대상이 됨
F1셀에 =sort(a1:d17)이라고 입력하면 1행도 머리글이 아니라 데이터로 인식돼서 정렬됩니다.
이는 데이터 탭 - 정렬 명령에 있는 ' 내 데이터에 머리글 표시' 옵션이 없기 때문입니다.
(3) 머리글은 빼고 데이터 범위만 지정해야 함
sort함수.xlsx함수를 닫는데, 저장 안 함을 선택하고, 다시 엽니다.
그리고, A1셀부터 D1셀까지를 복사해서 F1셀에 붙여 넣고,
F2셀에 =sort(a2:d17)이라고 입력해야 원하는 결과를 얻을 수 있습니다.
Sort 함수의 수식은 F2셀에서만 수정할 수 있습니다. 다른 셀로 이동하면 수식이 흐리게 보이고, 동적 배열 외곽에 파란색 선으로 테두리가 쳐집니다.
Sort 함수의 첫번째 인수인 범위를 A2셀에서 D17셀까지 지정했지만
두 번째부터 네 번째까지 선택적 인수는 하나도 지정하지 않았기 때문에
두 번째 인수인 정렬 순번(sort_index)은 기본값이 1 열이므로 지역명이 되고,
세 번째 인수는 정렬 순서(sort_order)인데 기본값이 오름차순이며,
네 번째 인수는 열 기준인지 여부로 기본값이 행 방향이므로
위와 같이 지역명을 기준으로, 오름 차순, 위쪽에서 아래쪽으로 정렬된 것입니다.
(4) 범위를 두 개 이상 ,(쉼표)로 구분해서 지정할 수 없음
이것은 데이터 탭의 정렬 명령과 동일한데(다중 선택 범위에서는 불가),
뒤에서 다뤄볼 sort_index나 sort_order은 중괄호 안에 쉼표로 구분해서 인수를 지정할 수 있는 것과 다른 점입니다.
(5) 범위를 1개 또는 2개 열 등 일부만 지정할 수 있음
K1셀에 '판매량'이라고 입력하고,
K2셀에 =SORT(D2:D17)라고 입력하면
1개 열만 정렬된 데이터를 얻을 수 있습니다.
나. sort_index(정렬 순번) 지정
(1) 정렬 순번 1개 지정
=SORT(A2:D17,2)라고 수식을 입력해서
정렬 순번을 범위에서 2번째 열인 판매 담당자로 지정하면 판매 담당자를 기준으로 가나다순으로 정렬됩니다.
(2) 정렬 순번을 2개 이상 지정
정렬 순번을 지역 + 판매 담당자 + 제품으로 지정하려면 1:3이라고 입력하면 안 되고 중괄호 사이에 쉼표(,)를 넣어서 {1,2,3} 식으로 입력해야 합니다.
수식 : =SORT(A2:D17,{1,2,3})
정렬 순번을 판매량까지 지정하기 위해 =sort(a2:d17,{1,2,3,4})라고 입력해도 지역+판매담당자+제품이 같은 것이 없어서 위와 결과가 같습니다.
따라서 13행의 사과를 바나나로 수정하면 위와는 달리 판매량 1310이 5323보다 위에 표시됩니다.
다. sort_order(정렬 순서) 지정
(1) 내림차순 정렬
F열부터 i열까지 선택한 후 열 경계선을 더블 클릭해서 열 너비를 자동 조절하고,
i열만 클릭한 후 홈 탭 - 표시 형식 그룹에서 쉼표(,)를 클릭해서 천 단위 구분 기호를 삽입합니다.
그리고,
F2셀에 =SORT(A2:D17,{1,2,3,4},{1,-1,-1,1})라고 입력하면 지역명은 오름차순, 판매 담당자는 내림차순, 제품도 내림차순, 판매량은 오름차순으로 정렬됩니다.
(2) 2번째 인수와 세 번째 인수의 개수가 다르거나 생략한 경우 에러 발생
세 번째 인수인 정렬 순서의 기본값이 오름차순이므로 1을 생략하고 ,(쉼표)만 표시하면 아래와 같이 '수식에 문제가 있다'는 에러가 발생합니다.
또한 기본값이 1이더라도 개수가 다르다면 #VALUE! 에러가 발생합니다.
라. by_col(열 방향 정렬 여부) 지정
(1) 머리글을 포함하지 않으면 원하는 결과가 안 나옴
=SORT(A2:D17,,,TRUE)라고,
범위를 A2에서 D17까지로 지정하고,
두 번째와 세 번째 인수는 입력하지 않고,
네 번째 인수만 TRUE라고 입력한 다음
엔터키를 누르면
열 방향 정렬이 TRUE이고 두 번째 인수의 기본값이 1이므로
1행이 되며, 범위에서 1행은 2행이므로
숫자가 먼저 나오고, 그다음은 가나다순으로 정렬됩니다.
2행부터는 1행의 기준을 좇아가므로 숫자 다음이 가나다순이 아닙니다.
(2) 머리글을 포함해서 범위를 지정해야 함
머리글을 기준으로 열 방향으로 정렬하려면
머리글까지 범위에 포함해야 합니다.
따라서 수식은 =SORT(A1:D17,,,TRUE)이 되는데,
M2셀부터 데이터가 있으므로 #분산! 에러가 발생합니다.
따라서, 수식이 있는 셀인 M2셀만 지웁니다. 나머지는 M2셀의 수식이 배열로 표시되는 종속된 것이므로 한꺼번에 지워집니다.
'Excel' 카테고리의 다른 글
동적 배열 수식과 유출된(Spilled) 범위 연산자 # (0) | 2023.08.17 |
---|---|
SortBy 함수 - by_array(정렬 기준 배열에 의한) 정렬 (0) | 2023.08.16 |
Sort 함수(1) - 정렬 명령과 비교 (0) | 2023.08.14 |
Index와 Aggregate 함수의 결합 (0) | 2023.08.13 |
조건에 맞는 값을 내림차순 또는 오름차순으로 찾기(3) (0) | 2023.08.12 |