
엑셀 FILTER 다중 조건 — 부분일치·OR/AND·날짜범위·중복 제거까지
요약: FILTER는 동적 배열 시대의 검색 표준이다. 동일 길이의 조건 배열을 *(AND), +(OR)로 결합하면 복잡한 필터도 한 줄로 끝난다. SEARCH로 부분일치, 날짜는 비교 연산, UNIQUE·SORTBY로 후처리하면 실무 대시보드가 즉시 완성된다.
1) 기본 구문과 원리
구문은 =FILTER(return_array, include, [if_empty]). include에는 반환 범위와 같은 길이의 TRUE/FALSE 배열이 들어간다. TRUE만 남고 FALSE는 제거되어 동적으로 스필된다. 표(Table)로 구성하면 범위 자동 확장이 걸려, 데이터가 늘어나도 수식을 고치지 않는다.
2) 다중 조건 AND
=FILTER(SalesTbl, (SalesTbl[Region]="서울")*(SalesTbl[Score]>=90)*(SalesTbl[Status]<>"취소"))
곱셈(*)은 TRUE(1)×TRUE(1)=1만 통과시키므로 AND가 된다. 비교기호 <>는 “같지 않음”이다.
3) 지역/카테고리 OR
=FILTER(SalesTbl, (SalesTbl[Region]="서울")+(SalesTbl[Region]="부산"))
더하기(+)는 하나라도 TRUE면 1이 되어 OR 조건을 만족한다. OR가 3개 이상일 때는 ISNUMBER(XMATCH()) 패턴이 더 읽기 쉽다.
=FILTER(SalesTbl, ISNUMBER(XMATCH(SalesTbl[Region], {"서울","부산","대전"})))
4) 부분일치(Contains) 검색
=FILTER(SalesTbl, ISNUMBER(SEARCH("프리미엄", SalesTbl[Product])))
SEARCH는 대소문자 구분 없음. 구분이 필요하면 FIND. 여러 키워드 OR은 ISNUMBER(SEARCH("A",…))+ISNUMBER(SEARCH("B",…))처럼 더하기로 묶는다.
5) 날짜범위 + 정렬 + 중복 제거
=LET(
s, DATE(2025,1,1),
e, DATE(2025,12,31),
f, FILTER(SalesTbl, (SalesTbl[Date]>=s)*(SalesTbl[Date]<=e)*(SalesTbl[Qty]>0)),
SORTBY( UNIQUE(CHOOSECOLS(f, XMATCH("Customer", SalesTbl[#Headers]))),
CHOOSECOLS(f, XMATCH("Qty", SalesTbl[#Headers])), -1 )
)
기간 내 구매 고객을 중복 없이 뽑고, 수량 기준 내림차순으로 정렬하는 예다. LET으로 가독성과 성능이 함께 좋아진다.
6) 빈 결과/오류 메시지 제어
=IFERROR(
FILTER(SalesTbl, (SalesTbl[Region]="서울")*(SalesTbl[Qty]>0)),
"조건에 맞는 결과가 없습니다."
)
7) 성능/운영 팁
- 조건 열을 **도움말 열**로 분리하면 유지보수가 쉽다. 예:
Helper_AND = (Region="서울")*(Qty>0) - 큰 표는 Ctrl+T로 변환, 계산 범위는 필요 열만
CHOOSECOLS로 좁힌다. NA()가 섞이면 비교가 실패한다. 먼저IFERROR로 정리한 뒤 필터링하자.