엑셀 VLOOKUP 다중조건 공식 :: 여러 개 조건으로 값을 찾는 방법!
사용된 공식
= { INDEX(출력범위, MATCH(1, (조건1=조건범위1)*(조건2=조건범위2)*..., 0)) }
[! 주의] 해당 공식은 배열수식이므로 Ctrl + Shift + Enter 로 '꼭! 반드시!' 입력해야 합니다.
그렇지 않으면 #VALUE! 오류가 출력됩니다.
인수 설명

인수 | 설명 |
출력범위 | 출력될 값이 입력된 범위입니다. (*조건범위, 출력범위의 높이/너비는 반드시 동일해야 합니다.) |
조건범위1 | 첫번째 조건이 입력된 범위입니다. |
조건1 | 첫번째 조건입니다. |
조건범위2 | 두번째 조건이 입력된 범위입니다. |
조건2 | 두번째 조건입니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [실무기초] VLOOKUP 함수 다중조건 검색예제파일
관련 강의
INDEX/MATCH 함수의 기본 동작원리가 궁금하시다면 아래 영상강의를 참고해주세요.
영상강의
공식에 대한 설명
INDEX / MATCH 함수를 응용한 공식입니다. VLOOKUP 함수를 '여러개의 조건'으로 검색하여 사용할 수 있습니다. INDEX/MATCH 공식의 기초 사용법은 관련포스트를 참고하세요.
해당 공식은 각 조건범위가 세로 또는 가로로 같은 방향일 경우에만 사용할 수 있습니다. 예를들어, 조건범위1는 가로방향이고 조건범위2가 세로방향일 경우 사용할 수 없습니다. 만약 가로/세로 다른 방향으로 여러개 조건을 만족하는 값을 찾아야 할 경우, INDEX함수의 3번째 인수를 추가하여 공식을 작성합니다. INDEX/MATCH 함수의 고급사용법은 관련 포스트에서 자세히 설명드렸습니다.
예제파일에 사용된 공식
= { INDEX($D$7:$D$18, MATCH(1, ($B$7:$B$18=H8)*($C$7:$C$18=H7), 0)) }
공식의 동작 원리
- 첫번째로, 여러개의 조건범위에서 각 조건을 모두 만족하는 행의 위치를 구합니다. MATCH 함수를 사용합니다.
조건1 : $B$7:$B$18 = '품목'
조건2 : $C$7:$C$18 = '주문처'
MATCH 함수는 조건1과 조건2를 동시에 만족하는 행의 번호를 반환합니다. - MATCH 함수에 입력되는 배열의 곱셈을 살펴보겠습니다.
= {저지방우유, 하루우유, 하루우유, 저지방우유, 딸기맛우유, ...} '// B7:B18에 입력된 품목입니다
= {오빠두식당, 오빠두식당, 엑셀천국, 엑셀천국, 엑셀천국, ...} '// C7:C18에 입력된 주문처입니다.'// 검색항목으로, '하루우유'와 '오빠두식당'을 검색할 경우, 두 배열의 곱셈은 아래와 같이 출력됩니다.
= {품목범위=하루우유} * {주문처범위=오빠두식당}
= {0, 1, 1, 0, 0, ..} * {1, 1, 0, 0, 0, ..}
= {0, 1, 0, 0, 0, ..} '// 두 배열의 곱셈을 계산합니다. - 이제 두 배열의 곱셈을 MATCH 함수에 넣어보겠습니다.
= MATCH(1, ('품목범위='품목')*('주문처범위'='주문처'), 0)
= MATCH(1, {0, 1, 0, 0, 0, ...}, 0)
= 2 '// MATCH 함수는 해당 범위에서 '1' 을 찾습니다. 배열에서 '1'이 두번째에 위치하므로 결과값으로 '2' 를 반환합니다. - 이제 INDEX 함수의 동작원리를 알아봅니다. INDEX 함수는 범위에서 '해당 순번'에 위치하는 값을 반환합니다.
= INDEX($D$7:$D$18, 2) '// MATCH 함수의 결과값으로 2가 반환되어 INDEX 함수에 입력됩니다.
= INDEX({1200, 1350, 1340, 1300, ...}, 2)
= 1350 '// 범위에서 2번쨰 위치한 1350이 반환됩니다. - 즉, 다시 정리하자면
첫번째 : 다중조건으로 검색할 '하루우유'와 '오빠두식당'이 모두 일치하는 행의 번호는 2번째이다. (MATCH 함수)
두번째 : 따라서 출력범위에서 2번째에 있는 항목인 1350을 출력한다. (INDEX 함수)