
엑셀 UNIQUE·FILTER·SORT 완벽 가이드: 중복 제거·필터·정렬 3분 컷
동적 배열 기반의 UNIQUE·FILTER·SORT 조합으로 원본을 건드리지 않고 분석용 테이블을 자동으로 만들 수 있습니다. 아래 예제를 그대로 복붙해 동일 결과를 재현하세요.
Quick Fix: 3분 컷 파이프라인
- 원본 Ctrl+T 테이블화(Sales).
- UNIQUE로 유일 목록:
=SORT(UNIQUE(Sales[Category])) - FILTER로 조건 추출:
=FILTER(Sales,(Sales[Channel]="Online")*(Sales[Date]>=DATE(2025,8,26))) - SORTBY로 매출 내림차순:
=SORTBY(FILTER(...), Sales[Revenue], -1)
개념: 함수 역할과 결합 순서
- UNIQUE=중복 제거, FILTER=조건 행 추출, SORT/SORTBY=정렬(다중 기준은 SORTBY)
- 리스트→UNIQUE→SORT / 행 추출→FILTER→SORTBY
실무 예제(복붙)
| Date | Channel | Category | Item | Qty | Revenue |
|---|---|---|---|---|---|
| 2025-08-25 | Online | Tops | T001 | 3 | 90000 |
| 2025-08-25 | Store | Bottoms | B014 | 1 | 35000 |
| 2025-08-26 | Online | Tops | T002 | 2 | 65000 |
| 2025-08-26 | Online | Shoes | S101 | 1 | 120000 |
| 2025-08-27 | Store | Shoes | S102 | 2 | 240000 |
| 2025-08-28 | Online | Outer | O010 | 1 | 159000 |
| 2025-08-29 | Online | Tops | T003 | 5 | 165000 |
| 2025-08-30 | Store | Outer | O011 | 1 | 199000 |
| 2025-08-30 | Online | Bottoms | B021 | 2 | 78000 |
| 2025-08-31 | Online | Shoes | S201 | 1 | 140000 |
카테고리 유니크 목록
=SORT(UNIQUE(Sales[Category]))
온라인+날짜 범위 필터
=FILTER(Sales, (Sales[Channel]="Online")*(Sales[Date]>=DATE(2025,8,26)))
매출 내림차순 정렬
=SORTBY(FILTER(Sales,(Sales[Channel]="Online")*(Sales[Date]>=DATE(2025,8,26))), Sales[Revenue], -1)
부분일치+제외어
=LET(k,"tops", ex,"T003", r,Sales, cond1,ISNUMBER(SEARCH(k,Sales[Category])), cond2,NOT(ISNUMBER(SEARCH(ex,Sales[Item]))), FILTER(r,cond1*cond2))
카테고리 합계
=LET(cats,UNIQUE(Sales[Category]), sums, MAP(cats, LAMBDA(c, SUM(FILTER(Sales[Revenue], Sales[Category]=c)))), HSTACK(cats, sums))
상위 N 카테고리
=LET(cats,UNIQUE(Sales[Category]), sums, MAP(cats,LAMBDA(c,SUM(FILTER(Sales[Revenue],Sales[Category]=c)))), ranktbl, SORTBY(HSTACK(cats,sums), INDEX(HSTACK(cats,sums),,2), -1), TAKE(ranktbl,3))
다중 기준 정렬
=SORTBY(Sales, Sales[Revenue], -1, Sales[Qty], 1)
필요 열만 리포트
=CHOOSECOLS(SORTBY(FILTER(Sales,Sales[Channel]="Online"), Sales[Revenue], -1), 1,3,4,6)
LAMBDA(TopNByRevenue)
=LAMBDA(tbl, n, LET(cats,UNIQUE(INDEX(tbl,,3)), sums, MAP(cats,LAMBDA(c,SUM(FILTER(INDEX(tbl,,6), INDEX(tbl,,3)=c)))), ranktbl, SORTBY(HSTACK(cats,sums), INDEX(HSTACK(cats,sums),,2), -1), TAKE(ranktbl, n)))
대체 방법/주의사항/체크리스트
- 대용량·정식 ETL은 Power Query/Power Pivot 권장
- 조건 결합: AND=*, OR=+, NOT()
- 특수 공백은
SUBSTITUTE(CHAR(160)," ")+TRIM - 결과 충돌(#CALC!) 시 스필 영역 비우기
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| #CALC! 스필 | 결과 범위 충돌 | 빈 영역으로 이동 |
| 새 행 미반영 | 일반 범위 참조 | 테이블화 후 컬럼명 참조 |
| 정렬 우선순위 꼬임 | SORT 단일 기준 사용 | SORTBY로 다중 기준 |
| 검색 누락 | 공백/특수 공백 | TRIM/SUBSTITUTE 처리 |
맺음말
UNIQUE·FILTER·SORT 파이프라인만으로도 ‘원본 유지형’ 분석 테이블을 자동 갱신할 수 있습니다. 다음 글은 VSTACK·WRAPROWS와 결합해 차트 자동화를 완성합니다.