목차▾
엑셀 VLOOKUP 함수란?
엑셀 VLOOKUP 함수는 표의 첫 번째 열에서 값을 찾아 같은 행의 다른 열 값을 가져오는 가장 많이 쓰이는 조회 함수입니다. V는 Vertical(세로)의 약자로, 세로로 정렬된 표에서 값을 찾는다는 의미예요. 상품 가격 조회, 사번으로 부서명 찾기, 두 표 병합 등 데이터 매칭의 90%가 VLOOKUP으로 해결됩니다.
구문은 =VLOOKUP(찾을값, 범위, 열번호, FALSE) 형식입니다. 4개 인수 중 마지막 FALSE가 핵심으로, 대부분의 실무에서 정확 일치 모드인 FALSE를 사용합니다. 생략하면 TRUE(유사 일치)가 기본값이 되어 의도치 않은 결과가 나올 수 있어서 반드시 FALSE를 명시하는 게 안전합니다.
range_lookup — FALSE vs TRUE의 결정적 차이
VLOOKUP에서 가장 많은 혼란을 일으키는 부분이 마지막 인수 range_lookup입니다. 두 모드의 차이는 결정적이라 잘못 쓰면 모든 결과가 틀립니다.
| 옵션 | 동작 | 언제 쓰나 |
|---|---|---|
| FALSE (또는 0) | 정확 일치만 반환. 없으면 #N/A | 실무의 90% — 이 모드 |
| TRUE (또는 1, 기본값) | 유사 일치 (가까운 작은 값). 데이터 오름차순 정렬 필수 | 구간별 등급·세율 매칭 |
함정: range_lookup을 생략하면 TRUE가 기본값. 정확 일치 의도로 생략하면 정렬 안 된 데이터에서 잘못된 값이 반환됩니다. "결과가 항상 첫 행만 나온다"는 신고의 대부분이 이 함정 때문이에요.
자주 발생하는 오류 6가지
VLOOKUP 오류 메시지별 원인과 해결법.
| 오류 | 원인 | 해결 |
|---|---|---|
| #N/A | 검색값 없음 또는 데이터 타입 불일치 | IFERROR 감싸기, TRIM/CLEAN, VALUE 변환 |
| #REF! | 열번호가 범위의 열 개수 초과 | col_index_num 재확인 |
| #VALUE! | 열번호가 1보다 작음 | 1 이상 정수로 |
| #NAME? | 함수명 오타 (VLOKUP 등) | VLOOKUP 정확히 입력 |
| 잘못된 결과 | TRUE 모드인데 데이터 정렬 안 됨 | 오름차순 정렬 또는 FALSE 사용 |
| 항상 첫 행만 | FALSE 빠뜨림 → TRUE 기본으로 작동 | 마지막 인수 FALSE 명시 |
#N/A가 가장 흔합니다. 대부분 원인은 눈에 안 보이는 공백(엑셀로 다운받은 데이터에 자주 섞여 있음) 또는 텍스트 vs 숫자 타입 불일치(예: "123"과 123). TRIM·CLEAN·VALUE 함수로 정리한 뒤 다시 시도하면 거의 해결됩니다.
VLOOKUP의 구조적 한계 4가지
VLOOKUP은 단순한 만큼 한계도 명확합니다. 이 한계를 알아야 다른 함수로 우회할 시점을 알 수 있어요.
한계 1. 왼쪽 조회 불가
검색 열보다 왼쪽에 있는 데이터는 가져올 수 없습니다. 예를 들어 상품명이 B열, 코드가 A열일 때 코드로 상품명은 되지만 상품명으로 코드는 VLOOKUP 불가. 해결: =INDEX(A:A, MATCH(B1, B:B, 0)) 조합 또는 XLOOKUP (Excel 2021+).
한계 2. 열 추가·삭제에 취약
col_index_num이 절대 번호라 중간에 열을 끼워넣거나 빼면 모든 수식이 깨집니다. 해결: MATCH로 동적 열 번호 산출 — =VLOOKUP(A1, B:F, MATCH("부서", B1:F1, 0), FALSE). 헤더 이름이 바뀌지 않는 한 안전합니다.
한계 3. 첫 매칭만 반환
동일 검색값이 여러 행 있어도 첫 번째 일치 행만 반환. 해결: Excel 365의 FILTER (=FILTER(반환열, 검색열=A1)), 보조 열 + COUNTIF, 또는 피벗테이블·Power Query.
한계 4. 대소문자 무시
"Apple"과 "apple"을 같은 값으로 취급. 구분이 필요하면 EXACT 함수를 INDEX/MATCH와 함께 배열 수식으로 조합해야 합니다.
VLOOKUP vs XLOOKUP vs INDEX/MATCH
조회 함수 3대장을 비교하면 본인 상황에 맞는 선택이 보입니다.
| 항목 | VLOOKUP | XLOOKUP | INDEX/MATCH |
|---|---|---|---|
| 왼쪽 조회 | ✗ | ✓ | ✓ |
| if_not_found 내장 | ✗ (IFERROR 필요) | ✓ | ✗ |
| 정확 일치 기본 | ✗ (TRUE 기본) | ✓ | ✓ |
| 구문 단순성 | ✓ 가장 단순 | ✓ 단순 | 중간 (2함수 조합) |
| 버전 호환 | Excel 2003+ | Excel 2021+ / 365 | Excel 2003+ |
의사결정 요약:
- Excel 2021/365 + 본인만 사용 → XLOOKUP (가장 편함)
- Excel 2019 이하 또는 다른 사람과 공유 → VLOOKUP + IFERROR (호환성)
- 왼쪽 조회·복잡한 조건 → INDEX/MATCH 또는 XLOOKUP
호환성도 거의 모든 스프레드시트(Google Sheets·LibreOffice Calc·한컴 한셀·WPS·Apple Numbers)에서 VLOOKUP은 동일하게 작동합니다. XLOOKUP은 일부 구버전에서 미지원이라 호환성이 중요하면 VLOOKUP이 안전합니다.
실전 사용 시나리오 10가지
실무에서 자주 마주치는 VLOOKUP 패턴.
- 상품 가격 조회 —
=VLOOKUP("사과", A1:C100, 2, FALSE) - 다른 시트 참조 —
=VLOOKUP(A1, Sheet2!A:D, 3, FALSE) - #N/A 오류 처리 —
=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "없음") - 다중 키 검색 (보조 열) —
=VLOOKUP(A1&B1, D1:F100, 3, FALSE)(D열에 미리=A&B보조 열) - 동적 열 번호 (MATCH 조합) —
=VLOOKUP(A1, B:F, MATCH("부서", B1:F1, 0), FALSE) - 구간별 등급 매칭 (TRUE) —
=VLOOKUP(A1, $D$1:$E$5, 2, TRUE)(D열 오름차순 정렬 필수) - 왼쪽 조회 (대안) —
=INDEX(A:A, MATCH(B1, B:B, 0)) - 와일드카드 부분 일치 —
=VLOOKUP("*사과*", A:B, 2, FALSE)(FALSE 모드에서 *, ? 지원) - 텍스트→숫자 타입 변환 —
=VLOOKUP(VALUE(A1), B:C, 2, FALSE) - 두 표 병합 (정합성) —
=VLOOKUP(A2, 다른표!A:D, 4, FALSE)— 명단표에 부서·직급 자동 채우기
자주 묻는 질문
Q. VLOOKUP 함수 사용법은?
=VLOOKUP(찾을값, 범위, 열번호, FALSE) 형식입니다. A1 셀의 값을 B1:D100 범위 첫 열에서 찾고 3번째 열 값을 가져오려면 =VLOOKUP(A1, B1:D100, 3, FALSE)를 입력합니다. 마지막 FALSE는 정확 일치 의미로, 거의 모든 실무에서 FALSE를 사용합니다.
Q. VLOOKUP #N/A 오류는 왜 나나요?
검색값이 범위 첫 열에 없거나, 데이터 타입이 달라서(텍스트 "123" vs 숫자 123) 매칭이 안 될 때 발생합니다. IFERROR로 감싸면 친절한 메시지로 바꿀 수 있고, 타입 불일치는 VALUE·TEXT 함수로 변환합니다. 공백·줄바꿈이 문제일 때는 TRIM·CLEAN으로 정리하세요.
Q. VLOOKUP과 XLOOKUP 중 뭘 써야 하나요?
Excel 2021/365 사용 + 본인만 쓴다면 XLOOKUP이 더 편합니다 (왼쪽 조회·if_not_found 내장·정확 일치 기본). 단 Excel 2019 이하 또는 다른 사람과 공유한다면 호환성을 위해 VLOOKUP+IFERROR 또는 INDEX/MATCH를 권장합니다.
Q. VLOOKUP에서 왼쪽 열 값을 가져올 수 있나요?
불가능합니다. VLOOKUP은 범위의 첫 번째 열에서만 검색하고 오른쪽 열만 반환합니다. 왼쪽 조회는 INDEX/MATCH 조합(=INDEX(반환열, MATCH(검색값, 검색열, 0))) 또는 XLOOKUP을 사용하세요.
Q. TRUE와 FALSE는 언제 어떻게 다른가요?
FALSE(정확 일치)는 검색값과 완전히 같은 값만 찾고, 없으면 #N/A를 반환합니다. TRUE(유사 일치)는 가장 가까운 작은 값을 찾으며 데이터가 오름차순 정렬되어 있어야 합니다. TRUE는 구간별 등급·세율 매칭 같은 특수 케이스에만 쓰고, 대부분은 FALSE를 명시적으로 입력해야 의도치 않은 오류를 방지합니다.
Q. 열 번호가 자꾸 깨지는데 어떻게 하나요?
col_index_num은 절대 위치라 중간에 열을 추가·삭제하면 깨집니다. MATCH 함수로 동적 계산하면 안전합니다: =VLOOKUP(A1, 범위, MATCH("헤더명", 헤더범위, 0), FALSE). 또는 Excel 표(Ctrl+T) 기능 + 구조적 참조도 좋은 대안입니다.
Q. 같은 검색값이 여러 행 있을 때 모두 가져올 수 있나요?
VLOOKUP은 첫 번째 일치 행만 반환합니다. 모든 결과가 필요하면 Excel 365의 FILTER 함수 (=FILTER(반환열, 검색열=A1)), 보조 열 + COUNTIF, 또는 피벗테이블·Power Query를 사용하세요.
Q. 다른 시트나 다른 파일의 데이터도 검색되나요?
네. 다른 시트는 =VLOOKUP(A1, Sheet2!A:D, 3, FALSE), 다른 파일은 =VLOOKUP(A1, [파일명.xlsx]Sheet1!A:D, 3, FALSE) 형식입니다. 단 외부 파일은 열려있어야 정상 작동하고, 닫으면 #REF! 오류 가능성이 있습니다.
본 페이지는 Microsoft Support 공식 VLOOKUP·XLOOKUP 문서를 기준으로 작성되었습니다. 정확한 동작은 Excel 버전·환경에 따라 달라질 수 있으니 중요한 작업 전에는 실제 환경에서 확인하세요.