
FILTER · SORT · UNIQUE로 데이터 추출·정렬·중복제거 끝! (파워쿼리 없이 1분 컷)
피벗·파워쿼리 없이도 동적배열 3형제로 실시간 목록·상위N·고유값을 뽑아냅니다. 보고서가 자동으로 따라오죠.
문법 & 옵션
| 함수 | 형식 | 포인트 |
|---|---|---|
| FILTER | =FILTER(array, include, [if_empty]) | include는 TRUE/FALSE 배열. OR는 +, AND는 *로 결합 |
| SORT | =SORT(array, [sort_index], [sort_order], [by_col]) | sort_order: 1 오름/ -1 내림. 열/행 기준 전환은 by_col |
| SORTBY | =SORTBY(array, by_array1, [order1], [by_array2], [order2], ...) | 다른 범위를 기준으로 다중 정렬 |
| UNIQUE | =UNIQUE(array, [by_col], [exactly_once]) | 열 기준 중복제거는 by_col=TRUE, 단일 등장값만은 exactly_once=TRUE |
FILTER — 조건 추출
예제 1) 지역=Seoul AND 상태=Delivered
=FILTER(A2:E100, (B2:B100="Seoul")*(E2:E100="Delivered"), "해당 없음")
예제 2) 상품이 Keyboard 또는 Mouse
=FILTER(A2:E100, (C2:C100="Keyboard")+(C2:C100="Mouse"))
예제 3) 날짜 범위
=FILTER(A2:E100, (D2:D100>=F2)*(D2:D100<=G2), "없음")
SORT · SORTBY — 정렬
예제 4) 매출 내림차순
=SORT(B2:D100, 3, -1)
예제 5) 지역 오름 → 날짜 내림 (다중 기준)
=SORTBY(A2:E100, B2:B100, 1, D2:D100, -1)
UNIQUE — 고유값/정확히 한 번
예제 6) 고유 지역 목록
=UNIQUE(B2:B100)
예제 7) 정확히 한 번만 등장한 주문번호
=UNIQUE(A2:A100,,TRUE)
예제 8) 지역·상품 고유 조합
=UNIQUE( CHOOSECOLS(A2:E100,2,3) )
실무 패턴 9가지
① 필터 → 정렬 → 상위 N
=TAKE(SORT(FILTER(A2:E100, B2:B100="Seoul"), 5, -1), 10)
② 월별 고유 고객 수
=COUNTA(UNIQUE(FILTER(Customer, (Date>=EOMONTH(F2,-1)+1)*(Date<=EOMONTH(F2,0)))))
③ 중복 제거 후 합계(스필 참조)
=LET(u, UNIQUE(A2:A100), BYROW(u, LAMBDA(r, SUMIF(A2:A100, r, C2:C100))))
④ 검색어 포함 실시간 목록
=FILTER(A2:A100, ISNUMBER(SEARCH($H$2, A2:A100)))
⑤ 열 기준 정렬(by_col)
=SORT(A1:G5,,,-1) // 행이 아니라 '열'을 기준으로
⑥ 정확히 한 번만 등장한 고객 목록 + 정렬
=SORT(UNIQUE(A2:A100,,TRUE))
⑦ 조건부 고유 조합(서울의 상품 조합)
=UNIQUE(FILTER( HSTACK(Region, Product), Region="Seoul" ))
⑧ 상위 N%만 남기기
=LET(s, SORT(A2:C100,3,-1), TAKE(s, ROUNDUP(ROWS(s)*0.2,0)))
⑨ XLOOKUP과 연결(고유 고객 → 상세)
=XLOOKUP(UNIQUE(Customer), Customer, HSTACK(Address, Phone))
스필/성능/예외 처리
- #SPILL! → 스필 영역 비우기, 표 내부가 아니어야 함.
- 빈 결과 → FILTER의
if_empty로 사용자 메시지 제공. - 대소문자 → SEARCH/LAMBDA로 통일(UPPER/LOWER) 후 비교.
- 성능 → 동일 계산은
LET으로 캐시, 전체열 참조 대신 테이블 사용.
요약
| 목표 | 대표 공식 |
|---|---|
| 조건 추출 | FILTER(범위, 조건, "없음") |
| 다중 정렬 | SORTBY(범위, 기준1,순서1, 기준2,순서2) |
| 고유값/정확히 한 번 | UNIQUE(범위,,TRUE/FALSE) |
| 상위 N | TAKE(SORT(FILTER(...),열,-1), N) |
FAQ
피벗과 무엇이 다른가요?
피벗은 요약표, 동적배열은 셀 수식로 실시간 목록/정렬/고유값을 만듭니다. 보고서 내 임베드·파이프라인에 적합합니다.
정렬 기준을 여러 개 적용하려면?
SORTBY를 사용해 기준/순서를 차례대로 나열하세요.