매장별 판매 데이터 수천 행 중에서 "서울 지역이면서 매출이 100만원 이상인 행"만 뽑아 별도 표로 만들어야 하는 상황이라고 해보자. 예전 같으면 자동 필터를 걸고 눈으로 복사하거나, 고급 필터 대화상자와 씨름해야 했다. 지금은 FILTER 함수 하나면 끝난다. 그런데 이 함수의 동작 방식을 데이터베이스를 다뤄본 사람이라면 꽤 익숙하게 느낄 것이다. 바로 SQL의 WHERE절과 개념적으로 닮아 있기 때문이다.
FILTER의 기본 구조
=FILTER(A2:D1000, B2:B1000="서울")FILTER는 두 개의 핵심 인수를 받는다. "걸러낸 결과로 보여줄 범위"와 "그 판단 기준이 되는 조건"이다. 이 수식은 B열이 "서울"인 행들만 골라, A부터 D열까지의 전체 행 데이터를 그대로 스필(앞선 글에서 다룬 동적 배열)로 펼쳐 보여준다. SUMIF가 조건에 맞는 값을 '더하는' 함수였다면, FILTER는 조건에 맞는 '행 자체를 그대로 가져오는' 함수라는 점이 가장 큰 차이다.
WHERE절과의 개념적 유사성
SQL에 익숙하다면 아래 두 표현이 사실상 같은 일을 한다는 것을 바로 알아챌 수 있다.
| SQL | 엑셀 FILTER |
|---|---|
| SELECT * FROM sales WHERE region = '서울' | =FILTER(A2:D1000, B2:B1000="서울") |
| WHERE region = '서울' AND amount >= 1000000 | =FILTER(A2:D1000, (B2:B1000="서울")*(C2:C1000>=1000000)) |
두 방식 모두 "전체 데이터 중 특정 조건을 만족하는 행만 선택한다"는 동일한 개념 위에 서 있다. 다만 SQL의 WHERE는 조건을 하나의 불리언 식으로 서술하는 반면, 엑셀의 FILTER는 앞서 SUMPRODUCT에서 다룬 것처럼 조건을 0과 1의 배열로 만들어 곱하는 방식으로 AND를 표현한다는 점이 실행 원리상의 차이다.
다중 조건 필터링
조건이 여러 개일 때는 SUMPRODUCT와 똑같이 곱셈으로 AND를, 덧셈으로 OR을 표현한다.
=FILTER(A2:D1000, (B2:B1000="서울")*(C2:C1000>=1000000))
=FILTER(A2:D1000, (B2:B1000="서울")+(B2:B1000="부산"))첫 번째는 "서울이면서 매출 100만원 이상"이라는 AND 조건이고, 두 번째는 "서울이거나 부산"이라는 OR 조건이다. 배열수식과 SUMPRODUCT에서 다뤘던 0/1 배열의 곱셈·덧셈 원리가 FILTER에서도 그대로 재사용되는 셈이다.
자주 하는 실수
조건을 만족하는 행이 하나도 없을 경우 FILTER는 기본적으로 #CALC! 오류를 반환한다. 이를 방지하려면 세 번째 인수에 빈 결과일 때 보여줄 대체값을 지정해주면 된다.
=FILTER(A2:D1000, B2:B1000="제주", "해당 데이터 없음")또한 조건 범위(B2:B1000)와 결과 범위(A2:D1000)의 행 개수가 반드시 일치해야 한다는 점도 SUMIF·SUMIFS와 동일하다. 행 개수가 어긋나면 #VALUE! 오류가 발생한다.
Q. FILTER 결과에 원하는 열만 골라 담을 수 있나요?
가능하다. 첫 번째 인수의 범위를 A2:D1000 전체가 아니라 필요한 열(예: A2:A1000, C2:C1000)만 참조하도록 조정하면 된다.
Q. FILTER와 자동 필터 기능은 무엇이 다른가요?
자동 필터는 화면에 보이는 행만 숨기거나 보여주는 '표시 방식'의 변화지만, FILTER 함수는 조건에 맞는 데이터를 실제로 다른 위치에 새로 뽑아내는 계산 결과라는 점이 본질적으로 다르다.
Q. FILTER로 뽑은 결과를 다시 정렬할 수 있나요?
가능하다. FILTER의 결과를 SORT 함수로 한 번 더 감싸면 조건에 맞는 데이터를 걸러낸 뒤 원하는 기준으로 정렬까지 한 번에 처리할 수 있다.
마무리
FILTER는 "전체 데이터에서 조건을 만족하는 행만 그대로 가져온다"는 점에서 데이터베이스의 WHERE절과 같은 문제를 풀고 있지만, 그 조건을 표현하는 방식은 엑셀 특유의 0/1 배열 연산에 뿌리를 두고 있다. 다음 글에서는 이렇게 걸러낸 데이터에서 다시 중복을 제거하는 UNIQUE 함수가, 수학의 집합(set) 개념과 어떻게 연결되는지 살펴본다.