CSV 도우미English

XLOOKUP과 VLOOKUP, 언제 무엇을 쓰나

상품 코드로 단가를 찾는 일이라면 두 함수로 비슷한 결과를 만들 수 있습니다. 선택 기준은 함께 쓰는 Excel 버전, 반환할 열의 위치, 못 찾았을 때의 표시입니다. 새 함수로 바꾼다고 원본의 공백·중복·누락까지 해결되지는 않습니다.

원인: 함수보다 환경과 표 구조가 먼저

기존 파일을 다른 사람에게 보낼 때는 받는 쪽의 함수 지원을 먼저 확인합니다. VLOOKUP은 선택한 표의 첫 열에서 찾아 오른쪽 열의 값을 가져오는 기본 구조이고, XLOOKUP은 찾을 범위와 반환 범위를 따로 지정합니다. Microsoft VLOOKUP

버전별 선택

Excel 환경XLOOKUP 선택 기준VLOOKUP 선택 기준
Microsoft 365용 Excel, Mac용 Microsoft 365사용 가능. 실제 설치·업데이트 상태 확인기존 호환 서식 유지 시 사용
Excel 2021·2024, 해당 Mac 버전사용 가능기존 서식과 함께 사용 가능
Excel 2016·2019XLOOKUP 미지원오른쪽 조회는 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']

흔한 오류와 확인 순서

CSV 검사기에서는 원문 구조와 코드 열의 앞뒤 스페이스·앞자리 0 위험을 확인할 수 있습니다. 스페이스 검사는 U+0020 대상이며 값은 바꾸지 않습니다. 중복 비교 도구는 기준 열에 따른 중복 검토를 돕지만 유효 행을 자동 판단하거나 Excel 수식을 계산하지는 않습니다.

한계

합성 CSV의 값·왼쪽/오른쪽 반환에 필요한 원문 사실·누락/중복·범위 어긋남 반례를 로컬 코드로 검증했습니다. 실제 Excel의 XLOOKUP/VLOOKUP 계산·버전별 실행·브라우저 UI는 실행하지 않았습니다. 사용 환경에서 예제 수식과 결과를 확인하세요.

이 글은 단일 열·기본 정확 일치 예시입니다. 대용량 속도, 이진 검색, 여러 열 반환, 빈 셀·오류 셀·외부 통합문서·로캘 차이는 검증 범위 밖입니다. XLOOKUP이 모든 파일에서 빠르거나 모든 오류를 없앤다고 보장하지 않습니다.

검토일: 2026-10-19. 공식 문서와 합성 자료·본문 Python 코드·원본 보존을 확인했습니다.

AI 보조 작성: AI로 원고와 합성 예제를 작성하고 공식 자료·로컬 실행 결과를 대조했습니다. 실제 고객 파일은 사용하지 않았습니다.

이 글의 예제 파일을 CSV 검사기에 넣어 직접 확인해 보세요.

CSV 검사기 열기 ›