엑셀 FILTER·SORT·UNIQUE 함수 — 동적 배열로 데이터 자동 추출하기

게시 ·수정 ·운영

FILTER, SORT, UNIQUE는 Microsoft 365·엑셀 2021 이상과 구글시트에서 지원하는 '동적 배열' 함수입니다. 조건에 맞는 데이터를 자동으로 추출해서 여러 셀에 한꺼번에 뿌려주기 때문에, 예전에는 필터·정렬 메뉴를 수동으로 눌러야 했던 작업을 수식 하나로 자동화할 수 있습니다. 원본 데이터가 바뀌면 결과도 즉시 갱신되는 것이 가장 큰 장점입니다.

FILTER — 조건에 맞는 행만 뽑기

=FILTER(배열, 조건, [조건에 맞는 값이 없을 때 표시할 값])

A2:C100에 이름·부서·매출 데이터가 있고, 부서(B열)가 '영업'인 행만 뽑고 싶다면 다음과 같이 씁니다. 결과는 별도의 필터 메뉴 없이 자동으로 여러 행에 펼쳐집니다.

=FILTER(A2:C100, B2:B100="영업")

조건은 AND(*)와 OR(+)로 여러 개 결합할 수 있습니다. 부서가 '영업'이면서 매출이 100만원 이상인 행만 뽑으려면 다음처럼 두 조건을 곱합니다.

=FILTER(A2:C100, (B2:B100="영업")*(C2:C100>=1000000))

SORT — 결과를 정렬해서 보여주기

=SORT(배열, [정렬기준 열번호], [오름차순1/내림차순-1])

FILTER로 뽑은 결과를 매출 높은 순으로 정렬하려면 SORT와 FILTER를 중첩하면 됩니다. 정렬 기준 열번호는 배열 안에서의 상대 위치이며, 마지막 인수 -1은 내림차순을 의미합니다.

=SORT(FILTER(A2:C100, B2:B100="영업"), 3, -1)

FILTER 인수 설명표

인수설명생략 시
배열조건에 맞춰 걸러낼 원본 데이터 범위필수(생략 불가)
조건TRUE/FALSE 배열을 만드는 비교식필수(생략 불가)
없을때값조건에 맞는 행이 하나도 없을 때 표시할 값생략하면 #CALC! 오류 발생

UNIQUE — 중복 없는 목록 뽑기

=UNIQUE(배열, [열 기준 여부], [한 번만 나온 값만])

부서 목록에서 중복 없이 부서명만 뽑고 싶다면 다음처럼 작성합니다. 드롭다운 목록의 원본 데이터를 자동 생성할 때도 많이 쓰입니다.

=UNIQUE(B2:B100)

세 번째 인수를 TRUE로 지정하면 '딱 한 번만 등장한 값'만 남깁니다. 예를 들어 여러 번 주문한 단골이 아니라 '이번 달에 딱 한 번만 구매한 고객' 목록을 뽑을 때 유용합니다.

=UNIQUE(B2:B100, FALSE, TRUE)

SORTBY — 정렬 기준을 다른 열에서 가져오기

SORT는 정렬 대상 배열 안에서 열번호로 기준을 지정하지만, SORTBY는 정렬할 배열과 기준이 되는 배열을 따로 지정할 수 있어 여러 기준을 동시에 적용할 때 더 직관적입니다.

=SORTBY(A2:C100, C2:C100, -1, A2:A100, 1)

이 수식은 먼저 C열(매출)을 내림차순으로 정렬하고, 매출이 같은 행끼리는 A열(이름)을 오름차순으로 다시 정렬합니다. 1차·2차 정렬 기준을 쌍으로 계속 추가할 수 있어 '부서별로 묶고 그 안에서 매출 순으로' 같은 다단계 정렬에 적합합니다.

FILTER·SORT·UNIQUE vs 자동 필터·정렬 메뉴

기준함수(FILTER·SORT·UNIQUE)자동 필터·정렬 메뉴
원본 데이터 변경 시결과가 자동으로 다시 계산됨필터·정렬을 다시 실행해야 함
원본 데이터 보존원본은 그대로, 결과만 별도 위치에 생성화면상 행이 숨겨지거나 순서가 바뀜
여러 조건 조합AND(*), OR(+)로 자유롭게 조합필터 조건 UI 안에서만 설정 가능
버전 호환성Microsoft 365·엑셀 2021 이상, 구글시트모든 버전에서 사용 가능

세 함수 조합 — 실시간 랭킹 보고서 만들기

세 함수를 중첩하면 '중복 없는 담당자 목록 중 이번 달 매출 상위 항목만 자동 정렬'하는 실시간 보고서를 수식 하나로 만들 수 있습니다.

=LET(u, UNIQUE(A2:C100), SORT(FILTER(u, INDEX(u, 0, 3)>=500000), 3, -1))

LET으로 UNIQUE 결과에 u라는 이름을 붙이고, INDEX(u, 0, 3)으로 그 결과의 3번째 열(매출)만 꺼내 조건을 겁니다. 실무에서는 위처럼 복잡하게 한 줄로 만들기보다, UNIQUE 결과를 한 열에 먼저 뽑고 그다음 SUMIF·FILTER로 집계하는 2단계 구조가 유지보수에 더 유리합니다. 수식이 길어질수록 오류를 찾기 어려워지기 때문입니다.

자주 나는 오류와 주의사항

  • •#SPILL! 오류: 결과가 펼쳐질 자리(아래·오른쪽 셀)에 이미 값이 있으면 발생합니다. 결과가 나올 공간을 미리 비워두세요.
  • •#CALC! 오류: FILTER 조건에 맞는 행이 하나도 없을 때 발생합니다. 세 번째 인수에 기본값(예: "" 이나 "결과없음")을 넣어 방지할 수 있습니다.
  • •이 함수들은 엑셀 2019 이하(구독형이 아닌 영구 라이선스)에서는 지원되지 않습니다. Microsoft 365, 엑셀 2021 이상 또는 구글시트를 사용해야 합니다.
  • •SPILL 범위를 참조할 때는 시작 셀에 # 을 붙입니다. 예: FILTER 결과가 D2에서 시작하면 D2# 로 전체 결과 범위를 참조할 수 있습니다.
💡

FILTER·SORT·UNIQUE는 피벗테이블과 달리 '새로고침' 버튼을 누를 필요 없이 원본 데이터가 바뀌자마자 자동으로 갱신됩니다. 매일 업데이트되는 데이터의 실시간 대시보드에 적합합니다.

조건에 맞는 행만 뽑아 정렬하는 FILTER·SORT 수식 만들기

함께 보면 좋은 글

엑셀 함수 글 더 보기 →