엑셀 FILTER
조건으로 행 자동 추출 — M365 동적 배열의 꽃, AutoFilter를 함수로 대체
FILTER 수식 구조
배열 (array)
필터링할 범위 — 전체 표 또는 단일 열
포함 조건 (include)
TRUE/FALSE 배열. 보통 A:A="조건" 같은 비교식. 배열 크기가 배열의 행 수와 일치해야 함
비어있을 때 (if_empty, 선택)
조건에 맞는 행이 없을 때 반환할 값. 생략 시 #CALC!
#SPILL! 오류가 납니다.직접 체험해보세요
부서·연봉 조건을 바꿔보세요. 원본은 그대로지만 FILTER 결과 표는 조건에 맞는 행만 동적으로 펼쳐집니다
조건 1: 부서
조건 2: 연봉 ≥ 0만원
원본 (A2:C9)
| 이름 | 부서 | 연봉 |
|---|---|---|
| 김지수 | 영업 | 4,800만원 |
| 이민호 | 개발 | 5,500만원 |
| 박서연 | 영업 | 5,200만원 |
| 정우진 | 개발 | 6,200만원 |
| 최하늘 | 인사 | 4,300만원 |
| 강도윤 | 영업 | 4,500만원 |
| 윤서아 | 개발 | 5,800만원 |
| 한지호 | 인사 | 4,700만원 |
FILTER 결과 (자동 펼침)
| 이름 | 부서 | 연봉 |
|---|---|---|
| 김지수 | 영업 | 4,800만원 |
| 박서연 | 영업 | 5,200만원 |
| 강도윤 | 영업 | 4,500만원 |
실전 활용 예제
=FILTER(A2:C20, B2:B20="영업", "해당 없음")단일 조건 — 영업부 행만 추출. AutoFilter와 비슷하지만 결과가 별도 영역에 자동 표시되어 대시보드에 적합.
=FILTER(A2:C20, (B2:B20="영업")*(C2:C20>=5000))AND 조건 — 곱셈으로 조건 결합. TRUE·TRUE는 1×1=1, 하나라도 FALSE면 0. SUMPRODUCT와 같은 원리.
=FILTER(A2:C20, (B2:B20="영업")+(B2:B20="개발"))OR 조건 — 덧셈. 어느 하나라도 TRUE면 0이 아닌 값이 되어 행 포함. 곱셈은 AND, 덧셈은 OR.
=SORT(FILTER(A2:C20, B2:B20=F1), 3, -1)FILTER + SORT 결합 — F1 부서로 필터 후 3번째 열(연봉) 기준 내림차순. 동적 대시보드의 기본 패턴.
다른 엑셀 함수도 알아보세요
FILTER vs AutoFilter — 어느 쪽을 써야
▼
리본의 데이터 → 필터(AutoFilter)와 FILTER 함수는 결과는 비슷해 보이지만 동작·용도가 다릅니다.
| 항목 | AutoFilter | FILTER 함수 |
|---|---|---|
| 원본 표 | 행 숨김 | 그대로 |
| 결과 위치 | 원본 자리 | 별도 영역 |
| 실시간 갱신 | × | ○ |
| 다중 시트 결합 | × | ○ |
실무 가이드: "내가 데이터 보면서 잠시 좁혀보기" → AutoFilter. "셀에 조건 적어두고 결과를 다른 셀에 표시하는 대시보드/보고서" → FILTER 함수. 함수 쪽이 자동화와 결합에 강합니다.
다중 조건 — 곱셈(AND) · 덧셈(OR) 원리
▼
FILTER의 포함 조건은 TRUE/FALSE 배열 하나여야 합니다. 여러 조건을 합치려면 산술 연산자로 엮어야 하죠 — SUMPRODUCT와 같은 원리입니다.
AND (모두 만족)
(A="영업")*(B>=5000)
→ 1×1=1만 통과, 하나라도 0이면 제외
OR (어느 하나)
(A="영업")+(A="개발")
→ 0보다 큰 값은 모두 TRUE로 해석됨
NOT (제외)
(A<>"인사")
→ <>는 ≠ 의미
AND·OR 함수를 그대로 쓰면 안 됩니다 — 결과를 단일 값으로 압축해버려 배열 동작이 깨집니다. 곱셈·덧셈을 쓰는 게 정석입니다.
FILTER의 함정 — #SPILL!, #CALC!, 공유 호환성
▼
FILTER는 동적 배열의 일원이라 새로운 종류의 오류 코드를 만납니다.
자주 만나는 3가지 오류
#SPILL! — 결과가 펼쳐질 자리에 다른 값이 있음. 그 셀들을 비워야 함
#CALC! — 조건 부합 행이 없음. if_empty 인수로 방지
#NAME? — Excel 2019 이하에서 FILTER 함수를 모름. 구버전 호환 필요시 INDEX·SMALL 배열 수식이나 SUMPRODUCT 사용
공유 시 주의: M365·2021로 만든 FILTER 수식을 2019 이하 사용자가 열면 정적 값으로 변환되거나 #NAME? 오류가 됩니다. 외부에 배포할 보고서라면 결과를 값으로 복사해두는 게 안전합니다.
자주 묻는 질문 (FAQ)
▼
Q. 결과를 가로(행)로 펼치려면?
원본 배열이 가로 방향이면 FILTER도 가로로 펼칩니다. 세로 데이터를 가로로 바꾸고 싶다면 결과를 TRANSPOSE로 감싸세요 — =TRANSPOSE(FILTER(...)).
Q. 결과 중 특정 열만 가져오려면?
배열 인수에 특정 열 범위만 넘기거나, CHOOSECOLS로 추출. =CHOOSECOLS(FILTER(A:C, ...), 1, 3)은 1·3열만.
Q. 부분 일치(contains)는?
ISNUMBER(SEARCH("키워드", A2:A20))를 조건으로 쓰면 됩니다. SEARCH는 위치를 반환하고 못 찾으면 #VALUE!, ISNUMBER로 TRUE/FALSE 변환.
Q. FILTER 결과로 합계·평균을 내려면?
그대로 감싸면 됩니다 — =SUM(FILTER(매출, 부서="영업")). 단일 값으로 압축됨. SUMIFS와 비교하면 가독성은 FILTER가 좋지만 성능은 SUMIFS가 빠릅니다.