VLOOKUP 다중 조건 고급 응용 — 중복 제거·OR·부분일치까지

CONTENTS

VLOOKUP 다중 조건 고급 응용 — 중복 제거, OR 조건, 부분일치까지

VLOOKUP 다중 조건은 이미 한 번 다뤘지만, 실무에서는 기초편만으로 해결되지 않는 상황이 많이 등장합니다. 이 글에서는 VLOOKUP 다중 조건 고급 패턴을 중심으로, 중복 제거·OR 조건·부분일치까지 단계별로 정리합니다.

엑셀 365를 사용한다면 UNIQUE/FILTER처럼 동적 배열 함수와 함께 설계하는 방법도 함께 익혀 두면, 나중에 파일 구조를 갈아엎을 일을 크게 줄일 수 있습니다.

기초 개념(헬퍼열, CHOOSE, INDEX + MATCH)만 정리된 글은 VLOOKUP 다중 조건 검색 방법(기초편)에서 먼저 확인하실 수 있습니다.

빠른 해결(Quick Fix) — 지금 당장 쓸 수 있는 고급 VLOOKUP 다중 조건 수식 3개

패턴 A: COUNTIFS + 헬퍼열로 “첫 번째 일치값만” VLOOKUP

상황

  • A열: 주문번호
  • B열: 고객코드
  • C열: 제품코드
  • D열: 주문일
  • E열: 매출액

목표: 고객코드 + 제품코드 조합이 여러 번 나와도 첫 번째 주문 행의 매출액만 가져오기

  1. E2에 조합키:

    =B2&"|"&C2
  2. F2에 “첫 번째 행만 키 유지”:

    =IF(COUNTIFS($B$2:B2,B2,$C$2:C2,C2)>1,"",E2)
  3. 고객코드(H2), 제품코드(I2)를 입력하고, 결과 셀에:

    =VLOOKUP(H2&"|"&I2,$F$2:$G$1000,2,FALSE)

COUNTIFS로 첫 번째 행만 남겨 두고, 나머지 중복 행의 키를 비워서 VLOOKUP이 볼 수 없게 만드는 패턴입니다.

패턴 B: CHOOSE로 헬퍼열 없이 다중 조건 VLOOKUP

헬퍼열을 추가할 수 없을 때는 CHOOSE로 “가상 테이블”을 만들 수 있습니다.

=VLOOKUP(
  H2&"|"&I2,
  CHOOSE({1,2}, $B$2:$B$1000&"|"&$C$2:$C$1000, $D$2:$D$1000),
  2,
  FALSE
)

실제 시트에는 헬퍼열이 없지만, CHOOSE가 “조합키”와 “반환값” 두 열짜리 가상 테이블을 만들어 주기 때문에 VLOOKUP이 그대로 동작합니다.

패턴 C: UNIQUE/FILTER로 다중 조건 결과를 한 번에 뽑기 (365/동적 배열)

동일 조합이 여러 행 있고, 그 조합별로 1행만 남기고 싶다면:

=UNIQUE(B2:D1000)

특정 고객·제품에 해당하는 행 전체를 필터링하고 싶다면:

=FILTER(
  B2:E1000,
  (B2:B1000=H2) * (C2:C1000=I2),
  "해당 없음"
)

이렇게 필터링된 결과를 다시 VLOOKUP/INDEX MATCH/XLOOKUP으로 가공하면, “다중 조건 → 행 전체 → 특정 열만 추출”이라는 흔한 패턴을 깔끔하게 만들 수 있습니다.

왜 또 다른 글이 필요한가? — “VLOOKUP 다중 조건 고급” 범위 정의

기초편에서는 헬퍼열, CHOOSE, INDEX MATCH를 이용한 다중 조건 조회까지만 다뤘습니다. 이번 글에서는 다음 내용을 추가로 다룹니다.

  • COUNTIFS + VLOOKUP 조합으로 “첫 번째 일치만 가져오기”
  • 헬퍼열 없이 CHOOSE/INDEX MATCH로 다중 조건 처리
  • UNIQUE/FILTER와의 역할 분담
  • 대용량에서 VLOOKUP 다중 조건을 쓰지 말아야 하는 상황

패턴 1 — COUNTIFS + VLOOKUP으로 중복 제거 & 첫 번째 행만 가져오기

① 샘플 데이터 구조 만들기

아래와 같은 매출 데이터가 있다고 가정합니다.

A:주문번호 B:고객코드 C:제품코드 D:주문일 E:매출액
2O-1001C001P012025-01-0150,000
3O-1002C001P012025-01-0555,000
4O-1003C001P022025-01-0370,000
5O-1004C002P012025-01-0260,000
6O-1005C002P012025-01-1065,000

② COUNTIFS로 각 조합의 첫 번째 행만 표시하는 헬퍼열

  1. F2에 조합키:

    =B2&"|"&C2
  2. G2에 “첫 번째 행만 키 유지”:

    =IF(COUNTIFS($B$2:B2,B2,$C$2:C2,C2)>1,"",F2)
  3. 아래와 같이 첫 번째 행만 키가 남습니다.

    B:고객 C:제품 F:조합키 G:첫 번째만 키
    2C001P01C001|P01C001|P01
    3C001P01C001|P01
    4C001P02C001|P02C001|P02
    5C002P01C002|P01C002|P01
    6C002P01C002|P01

③ VLOOKUP으로 “첫 번째 행”만 검색하는 공식

고객코드(I2), 제품코드(J2)를 입력해 두고, 결과 셀에 다음 수식을 입력합니다.

=VLOOKUP(I2&"|"&J2,$G$2:$H$1000,2,FALSE)

G열에는 “첫 번째 행만 키가 남은 열”, H열에는 매출액(또는 원하는 반환 열)을 두면, 항상 첫 번째 주문 행만 찾게 됩니다.

④ 조건이 3개 이상일 때 확장 패턴

조건이 3개(예: 고객 + 제품 + 색상) 이상이어도 원리는 같습니다.

=IF(
  COUNTIFS($B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2)>1,
  "",
  B2&"|"&C2&"|"&D2
)

조회 수식은 다음과 같이 확장할 수 있습니다.

=VLOOKUP(I2&"|"&J2&"|"&K2,$G$2:$H$1000,2,FALSE)

패턴 2 — 헬퍼열 없이 CHOOSE/INDEX MATCH로 다중 조건 + 부분일치

① CHOOSE로 가상 테이블 만들기

헬퍼열을 추가할 수 없다면 CHOOSE로 가상 테이블을 만들어 VLOOKUP을 사용할 수 있습니다.

=VLOOKUP(
  H2&"|"&I2&"|"&J2,
  CHOOSE(
    {1,2},
    $B$2:$B$1000&"|"&$C$2:$C$1000&"|"&$D$2:$D$1000,
    $E$2:$E$1000
  ),
  2,
  FALSE
)

② INDEX MATCH로 좌측 열 + 다중 조건 처리

같은 구조를 INDEX MATCH로 바꾸면 왼쪽 열 조회와 열 삽입에 더 강해집니다.

=INDEX(
  $E$2:$E$1000,
  MATCH(
    H2&"|"&I2&"|"&J2,
    $B$2:$B$1000&"|"&$C$2:$C$1000&"|"&$D$2:$D$1000,
    0
  )
)

INDEX MATCH 패턴은 별도 글인 VLOOKUP, XLOOKUP 한계를 넘는 INDEX MATCH function 완전 정복에서 더 다양한 예제로 정리해 두었습니다.

③ 부분일치(와일드카드) 조건 섞을 때 주의점

부분일치 조건은 대표 열 하나에만 쓰는 것이 안전합니다.

=INDEX(
  $E$2:$E$1000,
  MATCH(
    "*"&H2&"*"&"|"&I2&"|"&J2,
    $B$2:$B$1000&"|"&$C$2:$C$1000&"|"&$D$2:$D$1000,
    0
  )
)

이 예에서는 상품명에 H2 값이 포함되는 행 중에서, 색상과 사이즈가 정확히 일치하는 행을 찾습니다.

패턴 3 — 동적 배열 버전: UNIQUE/FILTER와 역할 분담하기

① UNIQUE로 “조건 조합별 1행만 남기기”

동일 조합이 여러 번 등장하는 데이터를 간단히 정리하려면 UNIQUE가 편리합니다.

=UNIQUE(B2:D1000)

또는 조합키 배열을 만들어서 UNIQUE를 쓰면, 고객+제품 조합별로 1개만 남길 수도 있습니다.

② FILTER로 다중 조건 행 전체 가져오기

좋은 패턴은 “조건을 FILTER로 먼저 좁히고, 필요한 열만 다시 조회”하는 방식입니다.

=FILTER(
  B2:E1000,
  (B2:B1000=H2) * (C2:C1000=I2),
  "해당 없음"
)

③ VLOOKUP 대신 XLOOKUP/INDEX MATCH로 마무리

동적 배열과 함께 쓸 때는 XLOOKUP/INDEX MATCH가 더 자연스러운 경우도 많습니다. XLOOKUP 다중 조건 관련 내용은 XLOOKUP 다중 조건 완벽 가이드, VLOOKUP과 비교는 VLOOKUP vs XLOOKUP 완전 가이드에서 자세히 다룹니다.

언제 VLOOKUP 다중 조건을 쓰지 말아야 할까? — SUMPRODUCT·피벗으로 보내야 할 케이스

다중 조건이 들어간다고 해서 항상 VLOOKUP이 정답은 아닙니다.

  • “단가”를 가져오는 등 단일 값을 찾는 경우 → VLOOKUP/XLOOKUP/INDEX MATCH
  • “합계/개수/평균” 등 집계가 목적일 때 → SUMIFS/SUMPRODUCT/피벗 테이블

복잡한 집계를 VLOOKUP 다중 조건으로 억지로 만들고 있다면, 아래 글들로 설계를 바꾸는 것을 추천합니다.

Troubleshooting — 자주 틀리는 증상·원인·해결법

증상 원인 해결법
COUNTIFS + VLOOKUP 패턴에서 항상 두 번째 행이 잡힘 COUNTIFS 범위가 현재 행까지가 아니라 전체 범위로 고정됨 COUNTIFS의 첫 번째 주소는 절대참조, 두 번째 주소는 상대참조로 설정해 “현재 행까지”만 집계
헬퍼열이 모두 같은 값으로 보이고 중복 제거가 되지 않음 조합키를 구분자 없이 단순 연결해 값이 뒤섞임 "|"처럼 눈에 보이는 구분자를 넣고, 숫자/텍스트 형식을 통일
CHOOSE 패턴에서 #VALUE! 오류 발생 CHOOSE에 전달한 배열들의 크기가 서로 다름 모든 범위가 같은 행 수를 가지는지 다시 확인
INDEX MATCH 다중 조건 수식이 #N/A만 반환 MATCH의 일치 유형 인수를 생략하거나 1/-1로 사용 다중 조건에서는 반드시 0(정확 일치)을 사용
UNIQUE/FILTER 사용 시 예전 버전에서 #NAME? 오류 동적 배열·새 함수 미지원 버전 피벗 테이블이나 VLOOKUP/SUMIFS 등의 고전 함수로 동일 논리를 재구성
VLOOKUP 다중 조건 수식이 느려서 파일이 자주 멈춤 전체 열(B:B 등) 참조 또는 지나치게 넓은 범위 사용 정확한 사용 범위만 지정하고, 필요하면 표/구조화 참조로 관리
#N/A가 자주 뜨고 이유를 찾기 어려움 공백·형식(텍스트 vs 숫자)·정렬 상태 등 기본 문제 VLOOKUP #N/A 오류 완벽 가이드 참고

마무리 & 다음에 보면 좋은 글 3개

이번 글에서는 VLOOKUP 다중 조건 고급 관점에서 COUNTIFS, CHOOSE, INDEX MATCH, UNIQUE/FILTER를 조합하는 세 가지 패턴을 정리했습니다.

함께 보면 좋은 글:

엑셀점프를 북마크해 두시면, 이후 XLOOKUP 고급 응용과 SUMPRODUCT 다중 조건 응용 글도 바로 확인하실 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *