5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
실무 위키응용 공식다중 범위 조건 여러 결과 출력

다중 범위 조건 여러 결과 출력

지원 버전 자세히 보기
엑셀 2013 이전엑셀 2016엑셀 2019엑셀 2021엑셀 2024M365웹 엑셀

여러 조건 열을 모두 만족하는 행을 한 번에 출력하는 공식입니다.

다중 범위 조건 여러 결과 출력 예제 미리보기
예제 미리보기 크게 보기

인수 설명

012021 이후 FILTER 방식

=FILTER ( 출력범위, ISNUMBER ( MATCH ( 조건범위1, 조건1, 0 ) )*ISNUMBER ( MATCH ( 조건범위2, 조건2, 0 ) ) )
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
출력범위필수두 조건 목록을 모두 만족할 때 반환할 값 범위입니다.
조건범위1필수첫 번째 조건 목록과 비교할 값 범위입니다. 출력범위와 높이가 같아야 합니다.
조건1필수첫 번째 조건범위에서 허용할 조건 목록입니다.
조건범위2필수두 번째 조건 목록과 비교할 값 범위입니다. 출력범위와 높이가 같아야 합니다.
조건2필수두 번째 조건범위에서 허용할 조건 목록입니다.
G2=FILTER(A2:A8,ISNUMBER(MATCH(B2:B8,D2:D3,0))*ISNUMBER(MATCH(C2:C8,E2:E3,0)))
A
B
C
D
E
F
G
H
1
이름
부서
등급
허용 부서
허용 등급
결과
2
김민준
영업
A
영업
A
김민준
3
박서연
인사
A
개발
B
이도윤
4
이도윤
개발
B
정우진
5
최하은
영업
C
오세훈
6
정우진
개발
A
7
한지민
인사
B
8
오세훈
영업
B
9
부서가 영업 또는 개발이면서 등급이 A 또는 B인 김민준, 이도윤, 정우진, 오세훈을 G2:G5에 차례대로 스필합니다.

동작 원리

두 MATCH 함수가 각 조건 목록의 포함 여부를 계산하고 두 결과를 곱해 모든 조건을 만족하는 행만 FILTER 함수로 반환합니다.

2021 이후 FILTER 방식의 예제 시트에서 G2:G5에 스필되는 네 이름의 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

첫 번째 MATCH 함수가 허용 부서를 찾습니다

MATCH 함수는 B2:B8의 부서를 D2:D3의 영업, 개발과 비교해 조건 목록의 순번 또는 #N/A 오류를 반환합니다.

=MATCH ( B2:B8, D2:D3, 0 )
= {1;#N/A;2;1;2;#N/A;1} 영업은 1, 개발은 2, 인사는 #N/A입니다.
2

두 번째 MATCH 함수가 허용 등급을 찾습니다

MATCH 함수는 C2:C8의 등급을 E2:E3의 A, B와 비교해 조건 목록의 순번 또는 #N/A 오류를 반환합니다.

=MATCH ( C2:C8, E2:E3, 0 )
= {1;1;2;#N/A;1;2;2} A는 1, B는 2, C는 #N/A입니다.
3

두 조건 마스크를 곱합니다

ISNUMBER 함수가 각 MATCH 결과를 TRUE와 FALSE로 바꾸고 두 배열을 곱합니다. 두 조건이 모두 TRUE인 행만 1로 남습니다.

=ISNUMBER ( {1;#N/A;2;1;2;#N/A;1} )*ISNUMBER ( {1;1;2;#N/A;1;2;2} )
= {1;0;1;0;1;0;1} 두 조건 목록에 모두 포함된 행의 마스크입니다.
4

FILTER 함수가 일치하는 이름을 반환합니다

FILTER 함수는 마스크가 1인 1, 3, 5, 7번째 행의 이름을 골라 G2부터 세로로 스필합니다.

=FILTER ( A2:A8, {1;0;1;0;1;0;1} )
= {"김민준";"이도윤";"정우진";"오세훈"} 두 조건 목록을 모두 만족하는 네 이름입니다.

02모든 버전 INDEX 배열 방식

=IFERROR ( INDEX ( 출력범위, SMALL ( IF ( ISNUMBER ( MATCH ( 조건범위1, 조건1, 0 ) )*ISNUMBER ( MATCH ( 조건범위2, 조건2, 0 ) ), ROW ( 출력범위 )-ROW ( INDEX ( 출력범위, 1 ) )+1, "" ), 반환순번 ) ), "" )
인수 설명 자세히 보기
인수구분설명
출력범위필수두 조건 목록을 모두 만족할 때 반환할 값 범위입니다. 배열수식에서는 절대참조로 고정합니다.
조건범위1필수첫 번째 조건 목록과 비교할 값 범위입니다. 출력범위와 높이가 같아야 하며 절대참조로 고정합니다.
조건1필수첫 번째 조건범위에서 허용할 조건 목록입니다. 절대참조로 고정합니다.
조건범위2필수두 번째 조건 목록과 비교할 값 범위입니다. 출력범위와 높이가 같아야 하며 절대참조로 고정합니다.
조건2필수두 번째 조건범위에서 허용할 조건 목록입니다. 절대참조로 고정합니다.
반환순번필수현재 결과 셀에서 몇 번째 일치 행을 반환할지 정하는 값입니다. 수식을 아래로 채우면 1씩 증가합니다.
G2=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNUMBER(MATCH($B$2:$B$8,$D$2:$D$3,0))*ISNUMBER(MATCH($C$2:$C$8,$E$2:$E$3,0)),ROW($A$2:$A$8)-ROW(INDEX($A$2:$A$8,1))+1,""),ROWS($G$2:G2))),"")
G3=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNUMBER(MATCH($B$2:$B$8,$D$2:$D$3,0))*ISNUMBER(MATCH($C$2:$C$8,$E$2:$E$3,0)),ROW($A$2:$A$8)-ROW(INDEX($A$2:$A$8,1))+1,""),ROWS($G$2:G3))),"")
G4=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNUMBER(MATCH($B$2:$B$8,$D$2:$D$3,0))*ISNUMBER(MATCH($C$2:$C$8,$E$2:$E$3,0)),ROW($A$2:$A$8)-ROW(INDEX($A$2:$A$8,1))+1,""),ROWS($G$2:G4))),"")
G5=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNUMBER(MATCH($B$2:$B$8,$D$2:$D$3,0))*ISNUMBER(MATCH($C$2:$C$8,$E$2:$E$3,0)),ROW($A$2:$A$8)-ROW(INDEX($A$2:$A$8,1))+1,""),ROWS($G$2:G5))),"")
A
B
C
D
E
F
G
H
1
이름
부서
등급
허용 부서
허용 등급
결과
2
김민준
영업
A
영업
A
김민준
3
박서연
인사
A
개발
B
이도윤
4
이도윤
개발
B
정우진
5
최하은
영업
C
오세훈
6
정우진
개발
A
7
한지민
인사
B
8
오세훈
영업
B
9
두 조건을 모두 만족하는 원본 행 번호 1, 3, 5, 7을 작은 순서대로 꺼내 G2:G5에 김민준, 이도윤, 정우진, 오세훈을 출력합니다.

동작 원리

두 조건 마스크를 곱해 모두 일치하는 행 번호만 남기고 SMALL 함수와 INDEX 함수가 번호 순서대로 이름을 반환합니다.

모든 버전 INDEX 배열 방식의 예제 시트에서 G2 셀이 김민준을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

두 조건 마스크를 곱합니다

각 MATCH 결과를 ISNUMBER 함수로 확인한 뒤 곱합니다. 부서와 등급 조건을 모두 만족하는 행만 1로 남습니다.

=ISNUMBER ( MATCH ( B2:B8, D2:D3, 0 ) )*ISNUMBER ( MATCH ( C2:C8, E2:E3, 0 ) )
= {1;0;1;0;1;0;1} 두 조건 목록에 모두 포함된 행의 마스크입니다.
2

IF 함수가 원본 행 번호만 남깁니다

IF 함수는 마스크가 1인 행의 상대 번호 1, 3, 5, 7만 남깁니다.

=IF ( {1;0;1;0;1;0;1}, ROW ( A2:A8 )-ROW ( INDEX ( A2:A8, 1 ) )+1, "" )
= {1;"";3;"";5;"";7} 두 조건을 모두 만족하는 원본 행의 상대 번호입니다.
3

SMALL 함수가 다음 행 번호를 꺼냅니다

G2에서 ROWS 함수는 1을 반환하므로 SMALL 함수는 첫 번째로 작은 행 번호 1을 반환합니다. 수식을 아래로 채우면 3, 5, 7을 차례대로 반환합니다.

=SMALL ( {1;"";3;"";5;"";7}, ROWS ( $G$2:G2 ) )
= 1 G2에서 사용할 첫 번째 일치 행 번호입니다.
4

INDEX 함수가 이름을 반환합니다

INDEX 함수는 A2:A8의 첫 번째 값인 김민준을 G2에 반환합니다. G3:G5에서는 행 번호 3, 5, 7에 있는 이름을 같은 방식으로 반환합니다.

=INDEX ( A2:A8, 1 )
= "김민준" G2에 출력되는 첫 번째 결과입니다.

댓글 0

댓글 0
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
스크랩 완료