가로형 요금표를 받아 들고 VLOOKUP으로 어떻게든 처리하려다 반나절을 날려본 경험이 있다면, 그건 함수를 몰라서가 아니라 방향을 놓쳤기 때문이다. 엑셀 VLOOKUP·HLOOKUP 차이는 단 하나다 — 찾으려는 표가 세로(열) 방향이면 VLOOKUP, 가로(행) 방향이면 HLOOKUP이다. 이 한 줄만 기억하면 함수 선택에서 헤매는 일은 없다.
V와 H, 이름 안에 이미 답이 있다
VLOOKUP의 V는 Vertical(세로), HLOOKUP의 H는 Horizontal(가로)의 약자다. 두 함수 모두 ‘범위에서 키 값을 찾아 지정 위치의 값을 반환한다’는 목적은 같지만, 키를 탐색하는 축이 정반대다.
- VLOOKUP: 범위의 첫 번째 열을 세로로 탐색 → 같은 행의 N번째 열 값 반환
- HLOOKUP: 범위의 첫 번째 행을 가로로 탐색 → 같은 열의 N번째 행 값 반환
인수 구조도 사실상 하나만 다르다. 세 번째 인수가 VLOOKUP은 col_index_num(열 번호), HLOOKUP은 row_index_num(행 번호)다. 나머지는 완전히 동일하다.
| 항목 | VLOOKUP | HLOOKUP |
|---|---|---|
| 키 탐색 방향 | 세로(열) | 가로(행) |
| 키 위치 | 범위의 첫 번째 열 | 범위의 첫 번째 행 |
| 반환 값 지정 | 열 번호 (col_index_num) | 행 번호 (row_index_num) |
| 기본 구문 | =VLOOKUP(값, 범위, 열번호, [0/1]) | =HLOOKUP(값, 범위, 행번호, [0/1]) |
VLOOKUP이 기본이 된 이유 — 데이터 관례의 문제다
실무에서 HLOOKUP을 한 번도 써본 적 없다는 사람이 대다수다. 함수가 열등해서가 아니다. 대부분의 데이터가 행을 레코드, 열을 속성으로 쌓는 세로형 구조로 만들어지기 때문이다.
직원 명단을 생각해보자. A열에 사번, B열에 이름, C열에 부서가 아래로 쭉 늘어선다. 특정 사번으로 부서를 찾을 때 VLOOKUP이 딱 맞는다. 반대로 사번을 행으로, 이름·부서를 그 아래에 세로로 쌓는 방식을 쓰는 경우는 거의 없다.
데이터베이스, CSV, ERP 내보내기 파일 — 어떤 포맷이든 행이 레코드 단위다. VLOOKUP이 기본 함수가 된 건 기능이 뛰어나서가 아니라, 세로형 데이터가 업계 관례이기 때문이다.
HLOOKUP이 진짜 필요한 두 가지 상황
가로형 요금·기준표 조회
배송비 기준이 무게 구간(~1 kg, ~3 kg, ~5 kg, 5 kg 초과)으로 첫 행에 나열되고, 그 아래 행에 각 구간별 금액이 있는 표가 있다고 하자. 특정 무게에 해당하는 요금을 뽑으려면 HLOOKUP이 자연스럽다. 이 표를 세로로 재구성해서 VLOOKUP을 쓸 수도 있지만, 원본 레이아웃이 고정돼 있다면 수식 하나로 끝나는 HLOOKUP이 훨씬 간결하다.
월별·분기별 집계 시트
1월~12월이 첫 행에 가로로 펼쳐지고 아래 행에 항목별 수치가 있는 예산 시트도 마찬가지다. “3월 마케팅 비용”을 꺼내는 수식에서 3월을 첫 행에서 찾고, 마케팅 비용이 위치한 행 번호를 지정하면 된다.
결국 HLOOKUP이 필요한 경우는 명확하다. 기준값(헤더)이 가로로 배치된 표를, 레이아웃을 바꾸지 않고 그대로 조회할 때다. 보고서 양식이 고정돼 데이터 방향을 바꿀 수 없는 상황이 대표적이다.
두 함수의 공통 한계 — 여기서 막히면 다음 단계로
VLOOKUP과 HLOOKUP은 구조적으로 같은 제약을 공유한다. 이 한계를 알아야 언제 다른 도구로 넘어갈지 판단할 수 있다.
- 단방향 참조: VLOOKUP은 키 열 오른쪽, HLOOKUP은 키 행 아래쪽 값만 반환한다. 키보다 왼쪽이나 위쪽 값은 기본 구문으로 가져올 수 없다.
- 키 위치 고정: 키가 반드시 범위의 첫 번째 열(또는 첫 번째 행)에 있어야 한다. 키가 중간에 있으면 범위 자체를 바꾸거나 다른 방법을 써야 한다.
- 열·행 삽입에 취약: 반환 위치를 숫자로 고정하기 때문에, 나중에 중간에 열이나 행이 삽입되면 번호가 밀려 엉뚱한 값이 나온다. 오류 메시지도 없어 발견이 늦다.
이 한계를 해결하는 고전적 방법이 INDEX+MATCH 조합이다. 키와 반환 열을 분리해 참조하므로 삽입·삭제에도 안전하고, 왼쪽 열 조회도 가능하다. Microsoft 365 이상 환경이라면 두 함수를 한 번에 대체하는 XLOOKUP을 쓸 수 있다. XLOOKUP은 조회 방향을 별도로 신경 쓸 필요 없고, 역방향 조회와 복수 반환도 기본 지원한다.
단, XLOOKUP은 구버전 엑셀이나 외부 공유 파일에서 #NAME? 오류로 표시된다. 파일을 여러 사람과 공유하거나 버전이 혼재하는 환경이라면 VLOOKUP·HLOOKUP이 현실적이다.
자주 발생하는 오류와 현장 대처법
#N/A — 찾는 값이 없다고 나올 때
실제로 값이 없는 경우보다 데이터 형식 불일치가 더 흔하다. 조회 키가 텍스트인데 범위에는 숫자로 저장된 경우(또는 반대), 앞뒤에 공백이 끼어 있는 경우가 대부분이다. 먼저 TRIM()으로 공백을 제거하고, VALUE() 또는 TEXT()로 형식을 통일한 뒤 재시도하는 것이 순서다.
마지막 인수 0(FALSE)을 생략하면 안 되는 이유
네 번째 인수를 생략하거나 TRUE(1)로 두면 근사 일치(Approximate Match) 모드가 켜진다. 이 모드는 키 열(또는 행)이 오름차순 정렬돼 있어야 올바르게 작동한다. 정렬이 안 된 상태에서 근사 일치를 쓰면 틀린 값이 오류 없이 반환된다. 발견하기 가장 어려운 유형의 실수다. 정확한 일치가 필요할 때는 반드시 0 또는 FALSE를 명시적으로 입력하라.
열·행 번호 하드코딩의 위험
VLOOKUP에서 col_index_num을 3으로 고정해뒀는데, 나중에 B열과 C열 사이에 새 열이 삽입되면 3번 열이 가리키는 데이터가 바뀐다. MATCH 함수로 열 제목을 동적으로 참조하면 이 문제를 예방할 수 있다. 예: =VLOOKUP(A2, 범위, MATCH("부서", 헤더행, 0), 0)
정리: 표 방향을 먼저 보면 선택은 자동이다
새 데이터를 추가할 때 표가 아래로 늘어나면 VLOOKUP, 오른쪽으로 늘어나면 HLOOKUP이다. 세로형 표가 압도적으로 많기 때문에 VLOOKUP이 기본이고, HLOOKUP은 가로 고정 레이아웃 조회에만 좁게 쓰인다.
두 함수 모두 키가 첫 열·행에 있어야 하고, 지정 방향으로만 참조한다는 제약은 동일하다. 이 한계가 걸린다면 INDEX+MATCH 또는 XLOOKUP으로 넘어갈 시점이다. 함수 선택 기준은 복잡하지 않다. 표 방향 하나면 충분하다.
자주 묻는 질문
VLOOKUP과 HLOOKUP 중 실무에서 어느 쪽을 먼저 익혀야 하나요?
VLOOKUP을 먼저 익히세요. 실무 데이터는 대부분 행이 레코드·열이 속성인 세로형 구조라 VLOOKUP 사용 빈도가 압도적입니다. HLOOKUP은 헤더가 가로로 고정된 특수 레이아웃에서만 필요합니다.
VLOOKUP에서 #N/A 오류가 계속 뜨는 주요 원인은 무엇인가요?
조회 키의 데이터 형식 불일치가 가장 흔합니다. 한쪽은 텍스트, 다른 쪽은 숫자로 저장됐거나 공백이 섞인 경우입니다. TRIM()으로 공백을 제거하고 VALUE() 또는 TEXT()로 형식을 맞춘 뒤 다시 시도하세요.
VLOOKUP 마지막 인수에 FALSE(0)를 꼭 입력해야 하나요?
정확한 값을 찾을 때는 반드시 입력해야 합니다. 생략하거나 TRUE를 쓰면 근사 일치 모드가 켜지고, 키 열이 오름차순 정렬되지 않은 상태에서는 엉뚱한 값이 오류 없이 반환됩니다.
XLOOKUP이 있으면 VLOOKUP·HLOOKUP을 따로 배울 필요가 있나요?
있습니다. XLOOKUP은 Microsoft 365 이상에서만 작동합니다. 구버전 엑셀이나 외부 공유 파일 환경에서는 #NAME? 오류가 발생하므로, 호환성 측면에서 VLOOKUP·HLOOKUP은 여전히 필수 기술입니다.
VLOOKUP으로 키 열보다 왼쪽에 있는 값을 가져올 수 있나요?
기본 VLOOKUP으로는 불가능합니다. 키 열 기준 오른쪽 값만 반환합니다. 왼쪽 값을 가져오려면 INDEX+MATCH 조합을 사용하거나, Microsoft 365 환경이라면 XLOOKUP을 쓰세요.