
XLOOKUP · XMATCH로 VLOOKUP 완전 대체! (정확 일치·가까운 값·와일드카드·다중조건 1분 컷)
이 글은 편집자가 실제 Excel 365에서 재현·검증했으며, 초안 정리에 AI 도구를 보조적으로 사용했습니다.
문법 & 핵심 옵션
| 함수 | 형식 | 포인트 |
|---|---|---|
| XLOOKUP | =XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) | 왼쪽/오른쪽/상하 모두 가능, 기본=정확 일치 |
| XMATCH | =XMATCH(lookup_value, lookup_array, [match_mode], [search_mode]) | 위치 반환(인덱스), SORTBY/INDEX와 궁합 |
match_mode: 0=정확(기본), -1=이하, 1=이상, 2=와일드카드. search_mode: 1=첫번째부터, -1=뒤에서부터, 2/ -2=이진 검색(정렬 필요).
정확 일치·와일드카드
SKU로 가격 찾기(없으면 “미등록”)
=XLOOKUP(G2, SKU, Price, "미등록")
제품명에 “pro” 포함 행의 단가
=XLOOKUP("*pro*", Product, UnitPrice, "없음", 2) // 2=와일드카드
뒤에서부터(최신 항목 우선)
=XLOOKUP(G2, OrderID, Status, "없음", 0, -1)
근사값(이상·이하)
요율표·할인테이블에 최적. 표를 해당 방향으로 정렬하세요.
구매액 이하 구간의 할인율
=XLOOKUP(Amount, Threshold, Rate, , -1) // 이하
점수 이상 학점(하한표)
=XLOOKUP(Score, Cutline, Grade, , 1) // 이상
다중조건·2차원 조회
지역+제품 다중조건 → 가격
=XLOOKUP(1, (Region=G2)*(Product=H2), Price, "없음")
XMATCH로 2D(행+열) 교차 조회
=INDEX(Data, XMATCH(G2, RowKey), XMATCH(H2, ColKey))
범위 반환·여러 열 한 번에
한 번의 조회로 여러 필드 스필
=XLOOKUP(G2, SKU, HSTACK(Price, Stock, Supplier), "없음")
날짜별 최신 가격(뒤에서 찾기)
=XLOOKUP(1, (SKU=G2)*(Date<=H2), Price, "없음", 0, -1)
실무 패턴 12가지
① 없는 코드에 기본가 반환
=XLOOKUP(Code, SKUs, Price, DefaultPrice)
② 다국어명(한국어→영어)
=XLOOKUP(KoName, KoList, EnList, KoName)
③ 고객 최신 주문 상태
=XLOOKUP(1,(Cust=G2), Status,"없음",0,-1)
④ 범주→색상(맵핑 테이블)
=XLOOKUP(Category, Map!A:A, Map!B:B, "gray")
⑤ 부분일치 여러 건 중 첫 매치
=XLOOKUP("*"&G2&"*", Product, Price, "없음", 2)
⑥ 근사값 요율 + 계산
=LET(r, XLOOKUP(Amount, Step, Rate,, -1), Amount*r)
⑦ 2D: 월×지역 매출
=INDEX(SalesTbl, XMATCH(Region, SalesTbl[지역]), XMATCH(Month, SalesMonths))
⑧ 목록 유효성(동적): 카테고리 고유값
=UNIQUE(XLOOKUP("*",Category,Category))
⑨ 병합키 없이 다중조건(날짜+SKU)
=XLOOKUP(1,(SKU=G2)*(Date=H2), Price, "없음")
⑩ 재고 부족 품목의 공급사
=FILTER(HSTACK(SKU,Supplier), XLOOKUP(SKU, SKU, Stock)<MinStock)
⑪ VLOOKUP 호환식 변환
// =VLOOKUP(key, table, 3, FALSE)
=XLOOKUP(key, table[1열], table[3열])
⑫ IFERROR 없이 사용자 문구
=XLOOKUP(key, keyRange, valRange, "데이터 없음")
자주 하는 실수 & 체크
- 근사값 정렬 누락 → -1은 오름차순, 1은 오름차순(하한표/상한표)에 맞게 정렬.
- 다중조건 괄호 →
(조건1)*(조건2)전체를 2번째 인수에 넣기. - 범위 반환 크기 → 반환 배열(HSTACK/CHOOSECOLS)은 동일 행 수가 맞아야 함.
- 텍스트 숫자 →
NUMBERVALUE로 정규화 후 조회.
요약
| 목표 | 대표 공식 |
|---|---|
| 정확 일치 | XLOOKUP(key, keyRange, valRange, "없음") |
| 와일드카드 | XLOOKUP("*"&키&"*", range, val,, 2) |
| 근사값 | XLOOKUP(x, 기준, 값,, -1/1) |
| 다중조건 | XLOOKUP(1, (A=…)*(B=…), 값) |
| 2D 조회 | INDEX(표, XMATCH(행키), XMATCH(열키)) |