본문 바로가기
엑셀 함수 강좌-플러스

027. (엑셀 함수 Plus) Sort 함수 사용법 - 함수로 오름차순, 내림차순 정렬, 다중조건 정렬

by Excel.Jump 청출어람 2023. 7. 22.
반응형

 
 
 

Sort함수 정렬함수

 
 
 
 

■ 목차

 
1. 함수 설명
2. Sort 함수의 구문 / 사용방법
3. Sort 함수 사용해 보기 (1)
4. Sort 함수 사용해 보기 (2)
5. Sort 함수 사용해 보기 (3) - 열기준(by_col) 정렬 예제
6. Sort 함수 응용 - 여러 개의 다중 조건 정렬하기
7. Sort 함수 응용 - Sort(Filter), Sort(Unique), Sort(Unique(Filter))
** 핵심 요약
 
 
  - Sort 함수는 최신 엑셀 프로그램(엑셀 2021, MS365)에서 사용이 가능한 함수입니다. 
  - 엑셀의 "동적 배열" 기능을 사용하는 최신 함수로 기존의 정렬 기능을 함수로 구현하였으며
  - 원본 데이터에서 Sort 함수로 원하는 데이터를 간단하게 정렬된 형식으로 추출하여 다른 장소에 결괏값만을 표시하는 것이 가능하게 되었습니다.
  - 동적배열 함수로 새로이 추가된 Filter, Unique 함수와 함께 Sort(Filter), Sort(Unique), Sort(Unique(Filter)) 함수 형식으로 다양하게 응용이 가능한 함수입니다. 
 
 
 
 
 

1. 함수 설명

 
  - Sort 함수는 정렬 기능이 함수로 구현된 것으로 범위 또는 배열의 내용을 오름차순 혹은 내림차순으로 정렬된 값을 별도의 위치에 표시하는 함수입니다. 
  - 최신 엑셀 버전 (엑셀 2021, MS365)에 새로이 추가된 함수로 함께 추가된 Unique 함수, Filter 함수와 함께 다양한 방식으로 응용이 가능해 보입니다. 
  - 그래서 과거 버전의 엑셀에는 없는 함수로 이전 버전의 엑셀에서는 추가해서 사용하는 것이 불가합니다. 

  - 결괏값이 원본 테이터가 정렬된 배열 형식으로 반환되는 최신 "동적 배열 함수"이기 때문에 "Ctrl + Shift + Enter"의
  - 기존 배열 수식 입력 방식이 아닌 다른 함수와 동일하게 "Enter"로 수식입력을 마무리하시면 됩니다. 

  - 엑셀의 정렬 기능은 원본 데이터를 수정하게 되지만 Sort 함수는 별도의 셀에 결괏값을 출력할 수 있기 때문에
  - Filter, Unique 함수의 결괏값을 정렬해서 보는 방식으로 많이 응용이 가능할 것입니다. 

  - 참고로 "오름차순"은 숫자의 경우 작은 수에서 큰 수로 올라가는 순서 즉 1, 2, 3, …, 가, 나, 다, …, a, b, c, … 순서로 정렬되는 것을 의미하고
  - "내림차순"은 반대로 숫자가 내려가는 순서로 정렬되는 것을 의미합니다. 
 
 
 
 
 

2. Sort 함수의 구문 / 사용방법

 
  - 아래 구문은 엑셀 도움말의 설명 내용입니다. 우리는 엑셀 함수의 구문을 다 외울 수도 없고 그럴 필요도 없습니다.
  - 다만 엑셀 도움말과 함수사용 시 표시되는 풍선도움말의 용어들에 익숙해질 필요가 있기 때문에  기회가 될 때마다 편하게 봐주시기 바랍니다.

  - SORT(array, [sort_index], [sort_order], [by_col])

  - array    필수 요소입니다. 정렬할 범위 또는 배열
  - sort_index  [선택 사항] 정렬할 행 또는 열을 나타내는 숫자
  - sort_order  [선택 사항] 오름차순의 경우 1(기본값), 내림차순의 경우 -1로 표시하여 원하는 정렬 순서를 나타내는 숫자
  - by_col  [선택 사항] 행별로 정렬하려면 FALSE(기본값), 열로 정렬하려면 TRUE로 표시하여 원하는 정렬 방향을 나타내는 논리 값



  - 첫 번째 인수는 array(= 배열, 셀 범위)는 정렬하고자 하는 원본데이터 범위입니다. 보통 원본 데이터 범위에 해당하는 셀 주소를 입력하게 됩니다. 

  - 두 번째 인수는 sort_index로 정렬(sort)할 기준이 되는 위치의 번호(index)입니다.
  - 어떤 열을 기준으로 정렬을 할 것인지를 지정해 주는 숫자로 정렬한 행 혹은 열의 번호를 아래와 같은 순서에서(1, 2, …) 해당하는 정수값을 입력하면 됩니다. 
  - 아래 예제의 경우 "일자" 기준으로 정렬하고자 하면 숫자 1, "이익율" 기준으로 정렬하고자 하면 숫자 4를 입력하면 됩니다.
 
 

Sort 함수 - sort_index 지정
* Sort 함수 - sort_index 지정

 
 
 
  - 세 번째 인수는 sort_order로 정렬(sort)하는 순서(order)를 의미하며 생략하거나 1을 입력하는 경우는 "오름차순"인 1, 2, 3, …, 혹은 가, 나, 다, … 순서이고
  - 숫자 -1을 입력하는 경우 "내림차순"으로 정렬이 되게 됩니다. 

  - 숫자 1 → + 1 → 숫자를 더하는 → 숫자가 커지는 → 숫자가 올라가는 → "오름차순 정렬"
  - 숫자 -1 → - 1 → 숫자를 빼주는 → 숫자가 작아지는 → 숫자가 내려가는 → "내림차순 정렬"

  - 네 번째 인수는 by_col로 정렬하는 방향을 의미합니다. 생략하거나 False 혹은 숫자 0을 입력하게 되면 행별로(by_row) 정렬이 되고
  - True 혹은 숫자 1을 입력하게 되면 열별로(by_column)로 정렬이 됩니다. 
  - 우리가 일반적으로 정렬하는 데이터 형식에서는 행별로 정렬이 되기 때문에 대부분의 경우 생략을 해주시면 됩니다. 

  - by_col 인수는 "Column 기준으로 정리할까요?"라는 의미로 → 거의 대부분 "아니요 = False = 숫자 0 = 생략"이 되게 됩니다.
 
 
 
 
 

3. Sort 함수 사용해 보기 (1)

 
  - 아래 판매 실적 데이터를 "일자"를 기준으로 오름차순 정렬을 해보도록 하겠습니다.

  - 필터링 함수의 장점은 아래 최종 수식과 같이 필터링 결과를 별도로 분리해서 결괏값을 만들 수 있을 뿐만 아니라 수식으로 자동화가 가능하다는 부분입니다. 
  - 수식으로 필터링할 조건을 연결하여 조건의 입력값을 변경해 가면서 자동으로 결괏값 조회가 가능하게 자동화할 수 있습니다.
 
 

Sort 함수 - 판매 실적 정렬
* Sort 함수 - 판매 실적 정렬

 
 
  - 1) 함수 입력 :  = SORT(

  - 수식 입력을 위한 등호 ( " = " )와 함수 Sort를 입력하고 인수 입력을 위해서 괄호 열기를 키보드로 입력합니다. 


  - 2) 첫 번째 인수 array 입력하기 :  = SORT(B3:E7,

  - 첫 번째 인수는 array로 정렬하고자 하는 원본 데이터의 전체 영역을 마우스 드래그로 선택하여 셀 주소 "B3:E7"을 입력합니다.
  - 그리고 인수 구분자 쉼표 ( " , " )를 키보드로 입력합니다.


  - 3) 두 번째 인수 sort_index 입력하기 :  = SORT(B3:E7, 1, 

  - 두 번째 인수는 sort_index로 정렬할 기준이 되는 열의 번호입니다. 
  - 여기서 "일자"는 첫 번째 열에 해당하기 때문에 숫자 1을 입력합니다. 
  - 그리고 인수 구분자 쉼표( " , " )를 키보드로 입력합니다. 


  - 4) 세 번째 인수 sort_order 입력하기 : = sort (B3:E7, 1, 1,

  - 세 번째 인수는 sort_order로 우리는 오름차순으로 적용하기 위해서 숫자 1을 입력합니다.
  - 그리고 인수 구분자 쉼표( " , " )를 키보드로 입력합니다. 


  - 5) 네 번째 인수 by_col 입력하기 :  = sort (B3:E7, 1, 1, 0)

  - 네 번째 인수 by_col로 정렬을 적용할 방향으로 이 경우 해방향(by_row)을 적용해 주기 위해서 숫자 0( = False)을 입력하고
  - 그리고 괄호 닫기를 입력하고 "Enter"키를 눌러서 수식 입력을 마무리합니다. 

  - Sort 함수는 "동적 배열 함수"이기 때문에 배열 수식이지만 "Ctrl + Shift + Enter"의 기존의 배열수식처럼 입력해 줄 필요가 없습니다. 
  - 그냥 "Enter"을 눌러 수식을 입력하는 것만으로도 배열 수식 입력이 가능하며 결과 또한 "필요한 크기만큼의 배열 형태"로 출력이 됩니다. 
  - 이렇게 "Enter"만으로 배열수식을 입력하고 그 배열의 크기가 자동으로 확장되는 것을 "동적 배열 함수, 동적 배열 수식"이라고 합니다.

  - Sort 함수로 정렬된 결괏값은 서식까지 자동으로 지정해주지 않기 때문에 "일자", "이익율"열은 날짜와 퍼센트 셀 서식을 지정해 줍니다. 

  - (셀 서식) 메뉴 패스 : 셀 범위 선택 > (마우스 우클릭) > 셀 서식 > "표시 형식" > "날짜" / "백분율"

  - 적용 수식 :  =SORT(B3:E7,1,1,0)
 
 

Sort 함수 사용해 보기(1)
* Sort 함수 사용해 보기(1)

 
 
  - 6) 첫 번째 열을 기준으로 오름차순으로 정렬하는 경우 간단 입력 : "= sort(B3:B7) "

  - 위의 예제처럼 첫 번째 열을 기준으로 오름차순으로 정렬하는 경우
  - Sort 함수의 경우 원본 데이터의 범위만을 지정해 주고 생략이 가능한 기본 인수값으로 사용가능해지기 때문에 수식이 매우 간단해지게 됩니다.

  - 적용 수식 : =SORT(B3:E7)
 
 

Sort 함수 - 디폴트 인수값 활용
* Sort 함수 - 디폴트 인수값 활용

 
 
 
 

4. Sort 함수 사용해 보기 (2)

 
  - 이번에는 정렬 조건을 조금 다르게 해서 사용하는 예제를 해보도록 하겠습니다. 
  - "이익율" 기준으로 내림차순으로 정렬을 하는 예제입니다. 

  - 기존과 다른 정렬 조건으로
  - 1) 정렬 기준이 되는 열이 "이익율"이기 때문에 sort_index는 4번째 열이 되고 숫자 4를 입력합니다.
  - 2) 정렬 순서에 해당하는 sort_order의 경우 내림차순에 해당하는 숫자 -1을 입력합니다.

  - 적용 수식 :  = SORT(B3:E7,4,-1)
 
 

Sort 함수 사용해 보기 (2)
* Sort 함수 사용해 보기 (2)

 
 
  - 만약에 "일자" 기준으로 "내림차순"으로 정렬을 해야 하는 경우 중간에 sort_index는 생략이 가능하지만 
  - 그다음 인수인 sort_order는 기본값이 아니어서 생략이 불가능하고 반드시 입력을 해줘야 합니다. 

  - 이렇게 여러 개의 인수중에 중간 위치의 인수가 생략이 가능한 경우 인수값을 입력하는 방식은 아래와 같이
  - 인수 값 입력 없이 인수 구분자 ( 콤마, " , " )만을 입력할 수 있습니다. 

  - 적용 수식 :  =SORT(B3:E7, ,-1) 
 
 

Sort 함수 - 중간의 인수가 생략된 형식 입력
* Sort 함수 - 중간의 인수가 생략된 형식 입력

 
 
 
 
 

5. Sort 함수 사용해 보기 (3) - 열기준(by_col) 정렬 예제

 
  - 열기준으로 정렬이 필요한 경우는 일단 데이터의 생긴 모양이 일반적인 우리가 잘 정렬하지 않는 방식입니다.
  - 만약 열기준으로 정렬이 필요하다면 먼저 데이터 정렬방식부터 다시 검토해 보시기를 추천드립니다. 

  - 아래는 "일자"를 기준으로 열 기준으로 정렬된 예제입니다.
  - 마지막 인수인 by_col 인수를 True 혹은 숫자 1을 입력하게 되면 "열 기준 ( = by_column)"으로 정렬이 가능하게 됩니다. 

  - 다시 한번 얘기드리지만 "열 기준" 정렬이 필요한 경우라면 반드시 데이터 정렬 방향을 다시 고려해 주시기 바랍니다.

  - 적용 수식 : =SORT(C2:G5, , , TRUE)
 
 

Sort 함수 - 열 기준 정렬하기 (by_col)
* Sort 함수 - 열 기준 정렬하기 (by_col)

 
 
 
 
 

6. Sort 함수 응용 - 여러 개의 다중 조건 정렬하기

 
  - 2개 이상의 여러 개의 다중 조건으로 정렬하는 방식은 크게 2가지가 있습니다. 


  - 1) Sort 함수의 정렬 기준(sort_index)을 여러 개(=배열 형식) 지정하는 방식

  - 이 경우 sort_index는 여러 개의 조건을 지정하기 위해서 배열 형식으로 " { 1, 2 } "와 같이 지정이 가능합니다.

  - 정렬 방식 (sort_order)의 경우는 모두 동일하게 적용하거나 다르게 적용을 하고 싶은 경우는
  - sort_order 인수를 배열 형식으로 " { -1, 1 } "으로 지정이 가능합니다. 

  - 수식이 조금 복잡해지기는 하지만 2, 3개 정도의 정렬 기준이라면 충분히 사용이 가능할 것으로 생각이 됩니다. 

  - 다음은 Sort 함수를 사용하여 "지점별(내림차순), 이익율별(오름차순)"으로 정렬하는 예제입니다.

  - 적용 수식 :  =SORT(B3:E7, {2,4}, {-1,1}) 
 
 

다중 조건 정렬 - Sort 함수
* 다중 조건 정렬 - Sort 함수

 
 
  - 2) 두 번째는 Sortby 함수를 사용

  - Sortby 함수는 여러 개의 다중 조건을 지정할 수 있는 정렬함수입니다. 
  - 사용방법은 아래와 같이 지정된 열별로 오름차순( 숫자 1) 혹은 내림차순 ( 숫자 -1)를 "기준열+정렬방법"을 쌍으로 지정을 해주는 방식입니다.

  - 적용 수식 :  =SORTBY(B3:E7, C3:C7,-1, E3:E7,1)
 
 

다중 조건 정렬 - Sortby 함수
* 다중 조건 정렬 - Sortby 함수

 
 
 
 
 

7. Sort 함수 응용 - Sort(Filter), Sort(Unique), Sort(Unique(Filter))

 
  - Sort 함수는 정렬을 해주는 함수이기 때문에 필터링을 해주는 Filter 함수, 중복을 제거해 주는 Unique 함수의 결괏값을
  - 최종적으로 정렬된 형태로 보기 위해서 Sort 함수를 같이 사용을 해주는 경우가 종종 있습니다.

  - 함수 안에 함수를 사용하는 형식이기 때문에 각각의 함수에 대한 사용 지식이 필요합니다.
  - 오늘은 각각의 사례별로 간단한 예제를 소개드리고자 합니다. 
  - 아래 및 별첨 예제 파일을 참조하시어 많이 활용해 보시기 바랍니다. 


  - 1) Sort(Filter) 함수
  - 필터링된 결괏값을 정렬해서 출력하는 예제입니다.
  - 아래 예제는 ① Filter 함수 : "지점 2"의 데이터를 필터링해서 ② Sort 함수 : "일자"를 오름차순으로 정렬한 결과입니다.

  - 적용 수식 :  =SORT(FILTER(B3:E7, C3:C7="지점 2", ""))
 
 

Sort(Filter) 함수
* Sort(Filter) 함수

 
 
  - 2) Sort(Unique) 함수

  - 중복 제거한(Unique) 결괏값을 정렬해서 출력하는 예제입니다.
  - 아래 예제는 ① Unique 함수 :  "지점"열의 중복 제거하고 ② Sort 함수 : 지점명을 내림차순으로 정렬한 결과입니다. 

  - 적용 수식 :  =SORT(UNIQUE(C3:C7),,-1)
 
 

Sort(Unique) 함수
* Sort(Unique) 함수

 
 
  - 3) Sort(Unique(Filter)) 함수

  - 필터링한 결괏값에서 중복을 제거하고 다시 정렬을 하는 예제입니다.

  - 아래 예제는 ① Filter 함수 : 이익율이 15% 이상인 지점, ② Unique 함수 : 해당 지점의 중복 제거
  - ③ Sort 함수 : "지점"을 기준으로 오름차순으로 정렬하는 예제입니다. 

  - 적용 수식 : =SORT(UNIQUE(FILTER(C3:C7, E3:E7>15%, "")))
 
 

Sort(Unique(Filter)) 함수
* Sort(Unique(Filter)) 함수

 
 
 
 
 

** 핵심 요약 : Sort 함수 사용법 - 함수로 오름차순, 내림차순 정렬, 다중조건 정렬 

 
1. 함수 설명

  - Sort 함수는 최신 엑셀 프로그램(엑셀 2021, MS365)에서 사용이 가능한 함수이다.
  - 정렬 기능이 함수로 구현된 것으로 오름차순 혹은 내림차순으로 정렬된 값을 별도의 위치에 표시하는 함수이다.


2. Sort 함수의 구문 / 사용방법

  - SORT(array, [sort_index], [sort_order], [by_col])
  - array    필수 요소입니다. 정렬할 범위 또는 배열
  - sort_index  [선택 사항] 정렬할 행 또는 열을 나타내는 숫자
  - sort_order  [선택 사항] 오름차순의 경우 1(기본값), 내림차순의 경우 -1로 표시하여 원하는 정렬 순서를 나타내는 숫자
  - by_col  [선택 사항] 행별로 정렬하려면 FALSE(기본값), 열로 정렬하려면 TRUE로 표시하여 원하는 정렬 방향을 나타내는 논리 값

  - 첫 번째 인수는 array(= 배열, 셀 범위)는 정렬하고자 하는 원본데이터 범위로 보통 원본 데이터 범위에 해당하는 셀 주소를 입력한다. 

  - 두 번째 인수는 sort_index로 정렬(sort)할 기준이 되는 위치의 번호(index)이다.

  - 세 번째 인수는 sort_order로 정렬(sort)하는 순서(order)를 의미하며 생략하거나 1을 입력하는 경우는 "오름차순"이 되고 숫자 -1을 입력하면 "내림차순"으로 정렬이 된다.

  - 네 번째 인수는 by_col로 정렬하는 방향을 의미한다. 거의 대부분 "생략" = False = 0으로 입력한다.


3. Sort 함수 사용해 보기 (1)

  - 판매 실적 데이터를 "일자"를 기준으로 오름차순 정렬해 보자
  - 1) 함수 입력 :  = SORT(
  - 2) 첫 번째 인수 array 입력하기 :  = SORT(B3:E7,
  - 3) 두 번째 인수 sort_index 입력하기 :  = SORT(B3:E7, 1, 
  - 4) 세 번째 인수 sort_order 입력하기 : = sort (B3:E7, 1, 1,
  - 5) 네 번째 인수 by_col 입력하기 :  = sort (B3:E7, 1, 1, 0)

  - 6) 첫 번째 열을 기준으로 오름차순으로 정렬하는 경우 간단 입력 : "= sort(B3:B7) "


4. Sort 함수 사용해 보기 (2)

  - "이익율" 기준으로 내림차순으로 정렬해 보자.

  - 1) 정렬 기준이 되는 열이 "이익율"이기 때문에 sort_index는 4번째 열이 되고 숫자 4를 입력한다.
  - 2) 정렬 순서에 해당하는 sort_order의 경우 내림차순에 해당하는 숫자 -1을 입력한다.

  - 적용 수식 :  = SORT(B3:E7,4,-1)


5. Sort 함수 사용해 보기 (3) - 열기준(by_col) 정렬 예제

  -  만약 "열 기준" 정렬이 필요한 경우라면 반드시 데이터 정렬 방향을 다시 고려하자.

  - 마지막 인수인 by_col 인수를 True 혹은 숫자 1을 입력하게 되면 "열 기준 ( = by_column)"으로 정렬이 가능하다.

  - 적용 수식 : =SORT(C2:G5, , , TRUE)


6. Sort 함수 응용 - 여러 개의 다중 조건 정렬하기

  - 2개 이상의 여러 개의 다중 조건으로 정렬하는 방식은 2가지가 있다.

  - 1) Sort 함수의 정렬 기준(sort_index)을 여러 개(=배열 형식) 지정하는 방식
  - 적용 수식 :  =SORT(B3:E7, {2,4}, {-1,1}) 

  - 2) 두 번째는 Sortby 함수를 사용
  - 적용 수식 :  =SORTBY(B3:E7, C3:C7,-1, E3:E7,1)


7. Sort 함수 응용 - Sort(Filter), Sort(Unique), Sort(Unique(Filter))

  - 1) Sort(Filter) 함수
  - 적용 수식 :  =SORT(FILTER(B3:E7, C3:C7="지점 2", ""))

  - 2) Sort(Unique) 함수
  - 적용 수식 :  =SORT(UNIQUE(C3:C7),,-1)

  - 3) Sort(Unique(Filter)) 함수
  - 적용 수식 : =SORT(UNIQUE(FILTER(C3:C7, E3:E7>15%, "")))
 
 

27. 예제 Sort 함수
0.02MB

 
 

[엑셀 함수 강좌-플러스] - 999. 엑셀 함수 Plus 목차

 

 

999. 엑셀 함수 Plus 목차

[엑셀 함수 강좌-플러스] - 001. (엑셀 함수 Plus) Text 함수 사용법 - 원하는 서식(포맷, 날짜/시간, 소수점, 퍼센트, 시간, 요일)을 텍스로 만들어 보자 [엑셀 함수 강좌-플러스] - 002. (엑셀 함수 Plus) Tr

nextmeok.tistory.com

 
 
* 엑셀 관련 궁금하신 거나 어려운 점이 있으시면 자유롭게 질문을 해주세요.
* 가능한 도움을 드릴 수 있도록 하겠습니다.
* 저도 많이 알지는 못하지만 누구나 그렇듯 시작이란 게 있고 경험이란 게 다를 것 같습니다.
* 편하게 문의하시면 됩니다. 저도 모를 수 있다. 감안해 주시고.

  - ILU, SH -

반응형

댓글