XLOOKUP과 VLOOKUP, 언제 무엇을 쓰나
상품 코드로 단가를 찾는 일이라면 두 함수로 비슷한 결과를 만들 수 있습니다. 선택 기준은 함께 쓰는 Excel 버전, 반환할 열의 위치, 못 찾았을 때의 표시입니다. 새 함수로 바꾼다고 원본의 공백·중복·누락까지 해결되지는 않습니다.
원인: 함수보다 환경과 표 구조가 먼저
기존 파일을 다른 사람에게 보낼 때는 받는 쪽의 함수 지원을 먼저 확인합니다. VLOOKUP은 선택한 표의 첫 열에서 찾아 오른쪽 열의 값을 가져오는 기본 구조이고, XLOOKUP은 찾을 범위와 반환 범위를 따로 지정합니다. Microsoft VLOOKUP
버전별 선택
| Excel 환경 | XLOOKUP 선택 기준 | VLOOKUP 선택 기준 |
|---|---|---|
| Microsoft 365용 Excel, Mac용 Microsoft 365 | 사용 가능. 실제 설치·업데이트 상태 확인 | 기존 호환 서식 유지 시 사용 |
| Excel 2021·2024, 해당 Mac 버전 | 사용 가능 | 기존 서식과 함께 사용 가능 |
| Excel 2016·2019 | XLOOKUP 미지원 | 오른쪽 조회는 VLOOKUP 검토. 왼쪽 조회는 INDEX/MATCH 같은 별도 방법 검토 |
| 웹·모바일·기타 배포 환경 | 환경별 함수 지원과 실제 파일 동작 확인 | 데스크톱과 같은 동작이라고 가정하지 않고 확인 |
Microsoft의 XLOOKUP 문서는 적용 대상 목록에 구버전 이름이 함께 보이더라도 Excel 2016·2019에서는 사용할 수 없다고 별도 주석으로 명시합니다. 파일을 열 수 있다는 것과 해당 함수를 계산할 수 있다는 것은 다릅니다. Microsoft XLOOKUP
재현: 왼쪽에 품명, 가운데에 코드가 있는 표
합성 상품표는 UTF-8 BOM이 있는 CSV입니다. 실제 고객 자료가 아닙니다.
item,code,price
Mug,A100,12000
Notebook,B200,3500
Pen,C300,900
Mug revised,A100,15000
이 표를 Products 시트 A1:C5에 가져온 경우를 설명합니다. E2는 찾을 코드 입력칸입니다. 가격이 실제 숫자로 읽혔는지와 코드의 원문을 확인하세요. CSV는 Excel 셀 자료형을 보관하지 않습니다.
해결 1: 오른쪽 단가는 두 함수로 비교
E2가 B200이고 기준표가 위와 같다면, 코드 B열에서 오른쪽 가격 C열로 조회하는 예시는 다음과 같습니다.
=VLOOKUP(E2,Products!$B$2:$C$5,2,FALSE)
=XLOOKUP(E2,Products!$B$2:$B$5,Products!$C$2:$C$5)
VLOOKUP의 열 번호 2는 선택한 B:C 범위 안의 두 번째 열입니다. 시트 전체의 C열 번호 3을 넣는 것이 아닙니다. 정확한 코드 조회를 위해 FALSE를 명시했습니다. VLOOKUP 인수 설명
XLOOKUP은 이 예시처럼 일치 방식을 생략하면 기본 정확 일치를 사용합니다. 예제의 기대 가격은 3500입니다. 단, 이 글은 수식을 Excel에서 실행한 실측이 아니라 공식 규칙과 합성 자료를 대조한 설명입니다.
해결 2: 코드 왼쪽의 품명이 필요하다면
=XLOOKUP(E2,Products!$B$2:$B$5,Products!$A$2:$A$5)
B200의 기대 품명은 Notebook입니다. 코드 열보다 왼쪽인 A열을 반환 범위로 지정했습니다. VLOOKUP의 열 번호를 음수로 바꿔 왼쪽 조회를 하는 방식은 아닙니다. 구버전 호환이 필요하면 표 배치를 바꾸거나 다른 조회 방법을 검토합니다.
해결 3: 못 찾는 코드의 표시를 정하기
XLOOKUP은 네 번째 인수에 못 찾았을 때의 값을 넣을 수 있습니다.
=XLOOKUP(E2,Products!$B$2:$B$5,Products!$C$2:$C$5,"확인 필요")
E2가 X999처럼 기준표에 없는 코드라면 이 예시의 기대 표시는 ‘확인 필요’입니다. 해당 인수가 없으면 기본 미일치 오류는 #N/A입니다. 표시 문구는 누락 코드를 복구하는 기능이 아닙니다. 다른 수식 오류까지 모두 이 문구로 바뀐다고 가정하지 마세요.
VLOOKUP의 #N/A만 별도 안내로 바꾸려면 IFNA를 함께 쓰는 예시를 검토할 수 있습니다.
=IFNA(VLOOKUP(E2,Products!$B$2:$C$5,2,FALSE),"확인 필요")
IFNA는 #N/A를 대상으로 합니다. 모든 오류를 처리하는 IFERROR와 범위가 다릅니다. 쓰는 환경에서 지원되는지 확인하고 원본 오류 기록을 보존하세요. Microsoft IFNA
해결 4: 함수 선택 뒤에도 원본과 범위를 점검
합성 예제의 A100에는 가격 12000·15000이 모두 있습니다. 기본 검색 방향의 첫 일치가 업무상 최신 가격이라는 뜻은 아닙니다. 적용일·유효 자료 같은 기준을 먼저 정하세요. 마지막 일치를 찾는 옵션을 쓰더라도 마지막 행이 최신 자료라는 보증은 없습니다.
Python으로 이 파일의 원문과 첫 일치 사실을 따로 확인할 수 있습니다. 이 코드는 Excel 함수 구현이 아닙니다. 단순한 ASCII 코드만 다루며 자료형 변환·와일드카드·오류 전파를 재현하지 않습니다.
import csv
with open('guide-09-products.csv', encoding='utf-8-sig', newline='') as f:
products = list(csv.DictReader(f, strict=True))
def first(key, field, missing='확인 필요'):
return next((row[field] for row in products if row['code'] == key), missing)
print(first('B200', 'item'), first('B200', 'price'))
print(first('X999', 'price'))
print([row['price'] for row in products if row['code'] == 'A100'])
출력은 다음과 같습니다.
Notebook 3500
확인 필요
['12000', '15000']
흔한 오류와 확인 순서
- #NAME?·지원되지 않는 함수 표시: 제품 버전·함수 철자·지원 여부부터 봅니다. 원본 코드가 없는 문제와 구분합니다.
- #N/A·‘확인 필요’: 해당 코드가 실제 검색 범위에 있는지, 앞뒤 공백·문자/숫자 유형·선택한 일치 방식이 맞는지 확인합니다.
- #VALUE! 등 범위 관련 오류: 찾을 범위와 반환 범위의 행 수와 대응 위치를 확인합니다. 동일 크기 점검은 Microsoft 지원 Q&A에서도 안내합니다. 크기만 같고 시작 행이 밀리면 오류 없이 다른 값을 가져올 수 있습니다.
- 값이 나오지만 맞지 않음: 중복 코드·근사 일치·범위에서 빠진 행을 확인하고 원본 몇 건을 직접 대조합니다. 검토 없이 오류를 0원이나 빈칸으로 감추지 않습니다.
CSV 검사기에서는 원문 구조와 코드 열의 앞뒤 스페이스·앞자리 0 위험을 확인할 수 있습니다. 스페이스 검사는 U+0020 대상이며 값은 바꾸지 않습니다. 중복 비교 도구는 기준 열에 따른 중복 검토를 돕지만 유효 행을 자동 판단하거나 Excel 수식을 계산하지는 않습니다.
한계
합성 CSV의 값·왼쪽/오른쪽 반환에 필요한 원문 사실·누락/중복·범위 어긋남 반례를 로컬 코드로 검증했습니다. 실제 Excel의 XLOOKUP/VLOOKUP 계산·버전별 실행·브라우저 UI는 실행하지 않았습니다. 사용 환경에서 예제 수식과 결과를 확인하세요.
이 글은 단일 열·기본 정확 일치 예시입니다. 대용량 속도, 이진 검색, 여러 열 반환, 빈 셀·오류 셀·외부 통합문서·로캘 차이는 검증 범위 밖입니다. XLOOKUP이 모든 파일에서 빠르거나 모든 오류를 없앤다고 보장하지 않습니다.
검토일: 2026-10-19. 공식 문서와 합성 자료·본문 Python 코드·원본 보존을 확인했습니다.
AI 보조 작성: AI로 원고와 합성 예제를 작성하고 공식 자료·로컬 실행 결과를 대조했습니다. 실제 고객 파일은 사용하지 않았습니다.