엑셀 FILTER·SORT·UNIQUE 함수 — 동적 배열로 데이터 자동 추출하기
최종 업데이트 2026-08-17
FILTER, SORT, UNIQUE는 마이크로소프트 365와 최신 구글시트에서 지원하는 '동적 배열' 함수입니다. 조건에 맞는 데이터를 자동으로 추출해서 여러 셀에 한꺼번에 뿌려주기 때문에, 예전에는 필터·정렬 메뉴를 수동으로 눌러야 했던 작업을 수식 하나로 자동화할 수 있습니다. 원본 데이터가 바뀌면 결과도 즉시 갱신되는 것이 가장 큰 장점입니다.
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·최신 구글시트만 지원 | 모든 버전에서 사용 가능 |
세 함수 조합 — 실시간 랭킹 보고서 만들기
세 함수를 중첩하면 '중복 없는 담당자 목록 중 이번 달 매출 상위 항목만 자동 정렬'하는 실시간 보고서를 수식 하나로 만들 수 있습니다.
=SORT(FILTER(UNIQUE(A2:C100), UNIQUE(A2:C100)[매출]>=500000), 3, -1)
실무에서는 위처럼 복잡하게 한 줄로 만들기보다, UNIQUE 결과를 한 열에 먼저 뽑고 그다음 SUMIF·FILTER로 집계하는 2단계 구조가 유지보수에 더 유리합니다. 수식이 길어질수록 오류를 찾기 어려워지기 때문입니다.
자주 나는 오류와 주의사항
- •#SPILL! 오류: 결과가 펼쳐질 자리(아래·오른쪽 셀)에 이미 값이 있으면 발생합니다. 결과가 나올 공간을 미리 비워두세요.
- •#CALC! 오류: FILTER 조건에 맞는 행이 하나도 없을 때 발생합니다. 세 번째 인수에 기본값(예: "" 이나 "결과없음")을 넣어 방지할 수 있습니다.
- •이 함수들은 엑셀 2019 이하(구독형이 아닌 영구 라이선스)에서는 지원되지 않습니다. Microsoft 365 또는 구글시트를 사용해야 합니다.
- •SPILL 범위를 참조할 때는 시작 셀에 # 을 붙입니다. 예: FILTER 결과가 D2에서 시작하면 D2# 로 전체 결과 범위를 참조할 수 있습니다.
FILTER·SORT·UNIQUE는 피벗테이블과 달리 '새로고침' 버튼을 누를 필요 없이 원본 데이터가 바뀌자마자 자동으로 갱신됩니다. 매일 업데이트되는 데이터의 실시간 대시보드에 적합합니다.