ExcelFILTERM365

엑셀 FILTER

조건으로 행 자동 추출 — M365 동적 배열의 꽃, AutoFilter를 함수로 대체

FILTER 수식 구조

=FILTER(배열, 포함조건, [비어있을때])

배열 (array)

필터링할 범위 — 전체 표 또는 단일 열

포함 조건 (include)

TRUE/FALSE 배열. 보통 A:A="조건" 같은 비교식. 배열 크기가 배열의 행 수와 일치해야 함

비어있을 때 (if_empty, 선택)

조건에 맞는 행이 없을 때 반환할 값. 생략 시 #CALC!

FILTER는 M365 / Excel 2021 이상 전용입니다. 결과가 여러 행이면 자동으로 아래·옆으로 펼쳐짐 (spill). Ctrl+Shift+Enter 같은 배열 수식 입력이 필요 없고, 결과 셀에 자물쇠가 걸려 다른 값을 덮어쓰면 #SPILL! 오류가 납니다.

직접 체험해보세요

부서·연봉 조건을 바꿔보세요. 원본은 그대로지만 FILTER 결과 표는 조건에 맞는 행만 동적으로 펼쳐집니다

E2#==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만원
결과: 3명 / 원본 8

실전 활용 예제

=FILTER(A2:C20, B2:B20="영업", "해당 없음")

단일 조건 — 영업부 행만 추출. AutoFilter와 비슷하지만 결과가 별도 영역에 자동 표시되어 대시보드에 적합.

예시: 원본은 그대로, 결과 별도영업부 행 자동 펼침
=FILTER(A2:C20, (B2:B20="영업")*(C2:C20>=5000))

AND 조건 — 곱셈으로 조건 결합. TRUE·TRUE는 1×1=1, 하나라도 FALSE면 0. SUMPRODUCT와 같은 원리.

예시: 영업 AND 5000 이상두 조건 모두 만족
=FILTER(A2:C20, (B2:B20="영업")+(B2:B20="개발"))

OR 조건 — 덧셈. 어느 하나라도 TRUE면 0이 아닌 값이 되어 행 포함. 곱셈은 AND, 덧셈은 OR.

예시: 영업 OR 개발둘 중 하나 만족
=SORT(FILTER(A2:C20, B2:B20=F1), 3, -1)

FILTER + SORT 결합 — F1 부서로 필터 후 3번째 열(연봉) 기준 내림차순. 동적 대시보드의 기본 패턴.

예시: 부서 선택 → 연봉 순필터 + 정렬
더 알아보기

FILTER vs AutoFilter — 어느 쪽을 써야

리본의 데이터 → 필터(AutoFilter)와 FILTER 함수는 결과는 비슷해 보이지만 동작·용도가 다릅니다.

항목AutoFilterFILTER 함수
원본 표행 숨김그대로
결과 위치원본 자리별도 영역
실시간 갱신×
다중 시트 결합×

실무 가이드: "내가 데이터 보면서 잠시 좁혀보기" → 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가 빠릅니다.