엑셀 XLOOKUP 함수 사용법: VLOOKUP과 차이, 예제 6가지로 끝내기
XLOOKUP의 인수 6개를 하나씩 풀어 설명하고, VLOOKUP으로는 어려웠던 왼쪽 찾기·여러 열 가져오기·구간 찾기를 예제로 정리했습니다. 지원 버전과 자주 나는 오류도 함께 다룹니다.
VLOOKUP을 쓰다 보면 한 번쯤 이런 일을 겪습니다. 찾을 값이 표의 첫 열에 있지 않아서 열 순서를 바꾸고, 열 하나를 끼워 넣었더니 결과가 전부 틀어지고, 마지막 인수 FALSE를 빼먹어서 엉뚱한 값이 나옵니다.
XLOOKUP 은 이런 불편을 없애려고 나온 함수입니다. 이 글에서는 XLOOKUP의 문법을 하나씩 풀고, 실무에서 바로 쓰는 예제 6가지를 정리했습니다.
XLOOKUP을 쓸 수 있는 버전
Microsoft 공식 문서 기준으로 XLOOKUP은 아래 버전에서 쓸 수 있습니다.
| 사용 가능 | 사용 불가 |
|---|---|
| Microsoft 365용 Excel (Windows, Mac) | Excel 2019 |
| Excel 2024, Excel 2021 (Windows, Mac) | Excel 2016 및 이전 버전 |
| 웹용 Excel, iPad·iPhone·Android용 Excel |
회사 PC가 Excel 2016이나 2019라면 XLOOKUP이
#NAME?오류로 표시됩니다. 파일을 여러 사람이 함께 쓴다면 모두의 버전을 먼저 확인하세요.
기본 문법
=XLOOKUP(찾을값, 찾을범위, 가져올범위, [없을때값], [일치방식], [검색방향])
앞의 3개만 필수이고, 나머지 3개는 필요할 때만 씁니다.
| 인수 | 필수 | 설명 |
|---|---|---|
| 찾을값 (lookup_value) | ○ | 찾으려는 값 |
| 찾을범위 (lookup_array) | ○ | 찾을값을 검색할 열(또는 행) |
| 가져올범위 (return_array) | ○ | 결과를 가져올 열. 여러 열도 가능 |
| 없을때값 (if_not_found) | 값을 못 찾았을 때 표시할 내용. 생략하면 #N/A |
|
| 일치방식 (match_mode) | 0 = 정확히 일치(기본값), -1 = 없으면 바로 작은 값, 1 = 없으면 바로 큰 값, 2 = 와일드카드 | |
| 검색방향 (search_mode) | 1 = 위에서 아래로(기본값), -1 = 아래에서 위로, 2·-2 = 정렬된 데이터용 이진 검색 |
VLOOKUP과 가장 큰 차이는 찾을 범위와 가져올 범위를 따로 지정한다 는 점입니다. 그래서 표의 열 순서나 열 번호에 신경 쓸 필요가 없습니다.
VLOOKUP과 무엇이 다른가
| 구분 | VLOOKUP | XLOOKUP |
|---|---|---|
| 기본 일치 방식 | 마지막 인수를 빼면 근사 일치 | 기본이 정확히 일치 |
| 찾는 열 위치 | 반드시 범위의 첫 열 | 어느 열이든 가능 (왼쪽 찾기 가능) |
| 결과 열 지정 | 열 번호(3, 4…)로 지정 | 범위를 직접 지정 |
| 열 삽입·삭제 | 열 번호가 어긋나 결과가 틀어질 수 있음 | 범위가 함께 조정되어 안전 |
| 못 찾았을 때 | IFERROR 등으로 감싸야 함 | 4번째 인수로 바로 지정 |
| 여러 열 한 번에 | 불가 (함수를 여러 번) | 가능 |
| 아래에서부터 찾기 | 불가 | 가능 (마지막 값 찾기) |
특히 VLOOKUP은 마지막 인수를 생략하면 근사 일치로 동작 한다는 점이 실수의 주원인입니다. 정렬되지 않은 표에서 근사 일치를 쓰면 오류 없이 엉뚱한 값을 돌려주기 때문에 알아채기도 어렵습니다. XLOOKUP은 기본이 정확히 일치라 이 문제가 없습니다.
예제 1. 기본 찾기
사원 명단에서 이름으로 부서를 찾는 경우입니다.
| A | B | C | |
|---|---|---|---|
| 1 | 사번 | 이름 | 부서 |
| 2 | 1001 | 김민준 | 영업팀 |
| 3 | 1002 | 이서연 | 인사팀 |
| 4 | 1003 | 박지호 | 개발팀 |
=XLOOKUP("이서연", B2:B4, C2:C4)
→ 인사팀
같은 작업을 VLOOKUP으로 하면 =VLOOKUP("이서연", B2:C4, 2, FALSE)입니다. 열 번호 2와 FALSE가 사라진 것만으로도 실수할 곳이 두 군데 줄었습니다.
예제 2. 왼쪽 열 값 가져오기
이름으로 사번 을 찾고 싶다면, 사번은 이름보다 왼쪽에 있어서 VLOOKUP으로는 열 순서를 바꾸거나 INDEX와 MATCH를 조합해야 했습니다. XLOOKUP은 그냥 범위만 바꾸면 됩니다.
=XLOOKUP("박지호", B2:B4, A2:A4)
→ 1003
예제 3. 못 찾았을 때 메시지 표시
=XLOOKUP("최유나", B2:B4, C2:C4, "명단에 없음")
→ 명단에 없음
예전처럼 IFERROR(VLOOKUP(...), "명단에 없음")으로 감쌀 필요가 없습니다. 텍스트는 반드시 큰따옴표로 감싸야 합니다.
예제 4. 여러 열을 한 번에 가져오기
가져올 범위를 여러 열로 지정하면 결과가 오른쪽 칸으로 자동으로 펼쳐집니다(Microsoft 365, Excel 2021 이후의 동적 배열 기능).
=XLOOKUP(1002, A2:A4, B2:C4)
→ 이서연 | 인사팀 (두 칸에 나뉘어 표시)
결과가 펼쳐질 자리에 이미 값이 있으면 #SPILL! 오류가 나니 오른쪽 칸을 비워 두세요.
예제 5. 구간 찾기 (등급·수수료율)
점수에 따라 등급을 매기는 것처럼 구간 으로 찾을 때는 일치방식을 -1(없으면 바로 작은 값)로 씁니다.
| E | F | |
|---|---|---|
| 1 | 기준점수 | 등급 |
| 2 | 0 | D |
| 3 | 60 | C |
| 4 | 75 | B |
| 5 | 90 | A |
=XLOOKUP(82, E2:E5, F2:F5, , -1)
→ B
82와 정확히 같은 기준점수가 없으니 바로 아래인 75의 등급 B를 돌려줍니다. 4번째 인수(없을때값)를 비워 두려면 쉼표만 두 번 연달아 쓰면 됩니다.
예제 6. 가장 최근 기록 찾기
거래 내역처럼 같은 거래처가 여러 번 나올 때, VLOOKUP은 항상 첫 번째 값만 찾습니다. XLOOKUP은 검색방향을 -1로 주면 아래에서부터 찾으므로 가장 마지막(최근) 기록 을 가져옵니다.
=XLOOKUP("A상사", 거래처열, 금액열, "거래 없음", 0, -1)
날짜순으로 쌓이는 장부에서 “이 거래처의 마지막 거래 금액”을 구할 때 유용합니다.
자주 나는 오류와 해결법
| 오류 | 원인 | 해결 |
|---|---|---|
#N/A |
찾을값이 없음 | 4번째 인수로 대체값 지정, 철자·공백 확인 |
#NAME? |
XLOOKUP을 지원하지 않는 버전, 또는 텍스트에 따옴표 누락 | 버전 확인, 텍스트는 " 로 감싸기 |
#VALUE! |
찾을범위와 가져올범위의 크기가 다름 | 두 범위의 행 수를 똑같이 맞추기 |
#SPILL! |
여러 칸 결과가 펼쳐질 자리에 값이 있음 | 오른쪽(또는 아래) 칸 비우기 |
| 값이 있는데 못 찾음 | 숫자가 텍스트로 저장됨, 앞뒤 공백 | TRIM 함수로 공백 제거, 셀 서식 통일 |
마지막 경우가 실무에서 가장 흔합니다. 다른 시스템에서 내려받은 데이터는 숫자처럼 보여도 텍스트인 경우가 많으니, 셀 왼쪽 위에 초록색 삼각형이 있는지 확인해 보세요.
정리
- XLOOKUP은 찾을 범위와 가져올 범위를 따로 지정해서 열 번호, 열 순서 걱정이 없습니다.
- 기본이 정확히 일치 라 VLOOKUP의
FALSE누락 실수가 사라집니다. - 못 찾았을 때 값, 여러 열 가져오기, 구간 찾기, 마지막 값 찾기를 함수 하나로 처리합니다.
- 단, Excel 2019 이하에서는 쓸 수 없으니 파일을 공유할 상대의 버전을 먼저 확인하세요.