
엑셀 VLOOKUP 다중조건 — 보조열/CHOOSE/INDEX·MATCH/XLOOKUP 완전정복
엑셀 VLOOKUP 다중조건은 기본 기능만으로는 직접 할 수 없지만, 보조열을 만들거나 CHOOSE/INDEX·MATCH/XLOOKUP을 사용하면 간단히 해결됩니다. 아래 절차를 그대로 따라 해보세요.
Quick Fix(3분)
- 결합키:
=TRIM(지역)&"|"&TRIM(품목) - 보조열 + VLOOKUP:
=VLOOKUP(I2&"|"&J2, $A$2:$H$1000, 6, FALSE) - CHOOSE 버전:
=VLOOKUP(I2&"|"&J2, CHOOSE({1,2}, TRIM($B$2:$B$1000)&"|"&TRIM($C$2:$C$1000), $F$2:$F$1000), 2, FALSE) - INDEX·MATCH:
=INDEX($F$2:$F$1000, MATCH(1, ($B$2:$B$1000=I2)*($C$2:$C$1000=J2), 0)) - XLOOKUP(마지막 항목):
=XLOOKUP(1, ($B$2:$B$1000=I2)*($C$2:$C$1000=J2), $F$2:$F$1000, "", 0, -1)
왜 막히나(원리)
- VLOOKUP은 첫 열에서 단일 키만 검색.
- 해결책: 보조열로 키 결합 또는 CHOOSE/INDEX·MATCH/XLOOKUP 사용.
방법 1) 보조열(추천)
=TRIM(B2)&"|"&TRIM(C2) // A열 보조키
=VLOOKUP($I$2&"|"&$J$2, $A$2:$H$1000, 6, FALSE)
방법 2) CHOOSE 가상 테이블
=VLOOKUP($I$2&"|"&$J$2,
CHOOSE({1,2}, TRIM($B$2:$B$1000)&"|"&TRIM($C$2:$C$1000), $F$2:$F$1000),
2, FALSE)
방법 3) INDEX·MATCH
=INDEX($F$2:$F$1000, MATCH(1, ($B$2:$B$1000=$I$2)*($C$2:$C$1000=$J$2), 0))
방법 4) XLOOKUP/FILTER
=XLOOKUP(1, ($B$2:$B$1000=$I$2)*($C$2:$C$1000=$J$2), $F$2:$F$1000)
=FILTER($B$2:$G$1000, ($B$2:$B$1000="서울")*(ISNUMBER(SEARCH("JEANS",$C$2:$C$1000))))
대체·주의·성능
- 정확히 일치(FALSE) 사용, 숫자/날짜 형식 통일.
- 공백/CHAR160 제거:
SUBSTITUTE(,CHAR(160)," ")→TRIM/CLEAN. - 중복 시: XLOOKUP -1(마지막), FILTER(모두).
- 대용량: 보조열 권장.
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| #N/A | 공백/형식 불일치 | TRIM/CLEAN/VALUE로 정제 |
| 값이 틀림 | 근사일치(기본) | 마지막 인수 FALSE 사용 |
| 느림 | 배열 계산 과다 | 보조열 도입, 범위 최소화 |
| 중복 행 처리 | 동일 키 다수 | XLOOKUP -1 또는 FILTER |