엑셀 브이룩업 오류가 반복된다면, 이 네 가지부터 확인하라

값이 분명히 있는데 #N/A가 뜨고, 복사했더니 범위가 뒤틀리는 상황—이 두 가지 오류만으로도 브이룩업을 포기하는 사람이 나온다. 엑셀브이룩업 오류 대부분은 마지막 인수 설정·절대참조 누락·데이터 타입 불일치 세 가지로 압축된다. 함수가 복잡해서가 아니라, 네 개의 인수 중 하나를 습관적으로 잘못 다루기 때문이다. 각 원인을 순서대로 짚고, 재발하지 않는 수식 작성법까지 정리한다.

VLOOKUP 구조: 인수 네 개가 하는 일

VLOOKUP의 문법은 단순하다.

=VLOOKUP(찾을값, 범위, 열번호, [일치방법])

  • 찾을값(lookup_value): 검색 기준이 되는 값. 셀 참조 또는 직접 입력.
  • 범위(table_array): 검색할 표 전체. 첫 번째 열이 자동으로 검색 기준 열이 된다.
  • 열번호(col_index_num): 범위 안에서 반환할 열의 상대 순서(첫 번째 열 = 1).
  • 일치방법(range_lookup): FALSE(0) = 정확히 일치, TRUE(1) = 근사치 일치.

구조를 보면 단순하지만, 핵심 함정은 범위의 첫 번째 열이 검색 열이라는 점에 있다. 반환하고 싶은 열이 검색 열보다 왼쪽이면 VLOOKUP은 처음부터 쓸 수 없는 도구다. 범위를 잘못 설정하면 수식이 옳아도 결과가 틀린다.

오류 원인 1: 마지막 인수 생략 또는 TRUE 방치

단연 가장 빈번한 실수다. 엑셀에서 네 번째 인수를 생략하면 기본값이 TRUE(근사치 일치)로 적용된다. 근사치 일치는 범위의 첫 번째 열이 오름차순으로 정렬되어 있을 때만 의미 있는 결과를 낸다. 정렬이 안 된 데이터에 TRUE를 쓰면 엉뚱한 행의 값이 반환되거나 #N/A가 뜬다.

실무에서 VLOOKUP을 쓰는 경우는 대부분 정확한 값을 찾는 것이다. 재고 코드, 사원번호, 주문번호—어떤 고유 식별자를 조회하든 예외 없이 FALSE를 명시해야 한다. 습관처럼 마지막 인수에 FALSE를 붙이는 것만으로 반복되는 오류의 절반은 사라진다.

오류 원인 2: 절대참조 없이 수식 복사

수식을 한 셀에서 작성한 다음 아래로 드래그하면, 상대참조로 된 범위도 함께 이동한다.

  • 나쁜 예: =VLOOKUP(A2, B2:D100, 3, FALSE) → 복사하면 B3:D101, B4:D102로 변한다.
  • 좋은 예: =VLOOKUP(A2, $B$2:$D$100, 3, FALSE) → 어디로 복사해도 범위 고정.

달러 기호($)를 직접 입력하거나, 범위를 마우스로 드래그한 뒤 F4 키를 누르면 자동으로 절대참조가 된다. 더 근본적인 해결책은 데이터 범위를 엑셀 표(Ctrl+T)로 변환하는 것이다. 표 이름이 자동으로 붙어 수식이 =VLOOKUP(A2, 표1, 3, FALSE) 형태가 되고, $ 없이도 복사 시 범위가 고정된다. 행이 계속 늘어나는 데이터라면 표 방식이 훨씬 유지보수가 편하다.

오류 원인 3: 데이터 타입 불일치와 숨은 공백

범위에 분명히 값이 있는데 #N/A가 뜰 때는 데이터 타입을 먼저 의심한다. 찾을값은 숫자(1001)인데 범위의 기준 열은 텍스트로 저장된 숫자(“1001”)인 경우, 엑셀은 두 값을 다르게 인식한다. 셀 왼쪽 상단의 녹색 삼각형이 그 신호다.

  • 텍스트를 숫자로 변환: VALUE 함수로 감싸거나, 해당 열 전체를 선택한 뒤 데이터 탭 → 텍스트 나누기를 실행하면 일괄 변환된다.
  • 숨은 공백 제거: ERP·외부 시스템에서 복사한 데이터는 앞뒤에 눈에 보이지 않는 공백을 달고 오는 경우가 많다. =VLOOKUP(TRIM(A2), $B$2:$D$100, 3, FALSE)처럼 찾을값을 TRIM으로 감싸면 공백 문제를 즉시 해결할 수 있다.
  • 대소문자: VLOOKUP은 대소문자를 구분하지 않는다. ABC와 abc를 같은 값으로 처리한다. 구분이 필요하다면 EXACT 함수와 배열 수식을 조합해야 한다.

열 번호, 이 숫자 하나가 결과를 바꾼다

열 번호는 시트 전체 기준이 아니라 지정한 범위 안의 상대 순서다. 범위를 C열~F열로 설정했다면 C=1, D=2, E=3, F=4다. 시트 기준으로 D열은 4번째지만, 이 범위 안에서는 2다. 이 차이를 혼동하면 수식 자체는 오류가 없는데 엉뚱한 열 값이 나온다.

범위에 열을 삽입하거나 순서를 바꾸면 열 번호가 달라지는 것도 골칫거리다. MATCH 함수로 열 번호를 동적으로 계산하면 이 문제가 해결된다.

=VLOOKUP(A2, $B$2:$E$100, MATCH("반환할열헤더", $B$1:$E$1, 0), FALSE)

열 순서가 바뀌어도 제목 행의 헤더 텍스트가 정확하면 수식이 자동으로 올바른 열을 찾아간다. 열이 자주 재배치되는 보고서 작업에서 특히 유용하다.

VLOOKUP이 구조적으로 못 하는 것

왼쪽 열 참조 불가

VLOOKUP은 범위의 가장 왼쪽 열에서만 검색하고, 오른쪽 열에서만 값을 반환한다. 반환하려는 값이 검색 기준 열보다 왼쪽에 있으면 VLOOKUP으로는 불가능하다. 이 경우 INDEX+MATCH 조합이 표준 해결책이다.

=INDEX($A$2:$A$100, MATCH(D2, $C$2:$C$100, 0))

C열에서 D2 값을 찾아 A열 값을 반환하는 예시다. 검색과 반환 방향에 제한이 없다.

다중 조건 조회

VLOOKUP은 기준 값 하나로만 검색한다. 부서 코드와 직급을 동시에 기준으로 삼아야 하는 경우, 보조 열에 두 값을 연결한 복합 키를 만들거나 XLOOKUP의 배열 인수를 활용해야 한다.

XLOOKUP으로 전환할 시점

엑셀 365나 2019 이상 환경이라면 XLOOKUP이 VLOOKUP을 사실상 대체한다. 왼쪽 참조 가능, 기본값이 정확히 일치(마지막 인수 생략 함정 없음), 오류 발생 시 대체 값 내장, 역순 검색 지원까지 VLOOKUP의 한계를 모두 극복한다. 구버전 엑셀(2016 이하)과 파일을 공유해야 하는 환경에서만 VLOOKUP을 유지하는 것이 현실적인 판단이다.

브이룩업 오류 진단 체크리스트

확인 항목 해결책
마지막 인수가 TRUE이거나 생략됨 FALSE(또는 0)로 명시
범위에 절대참조($) 없음 F4 키로 $ 추가 또는 표(Table) 활용
찾을값과 기준 열의 데이터 타입이 다름 VALUE·TEXT 함수로 타입 통일
셀에 앞뒤 공백 포함 TRIM 함수로 공백 제거
열 번호를 시트 기준으로 계산함 범위 내 상대 순서로 재계산
반환 열이 검색 열보다 왼쪽에 있음 INDEX+MATCH 또는 XLOOKUP으로 교체

정리

엑셀 브이룩업은 어려운 함수가 아니다. 하지만 잘못된 습관 하나—마지막 인수 생략, 절대참조 누락—가 수백 행짜리 보고서를 오류 투성이로 만든다. 오류가 뜰 때는 복잡한 원인을 의심하기 전에 위 체크리스트를 순서대로 확인하는 것이 가장 빠른 진단이다. 세 가지 원칙(FALSE 명시·절대참조·타입 통일)이 몸에 배면, 그다음 단계로 INDEX+MATCH나 XLOOKUP을 익히는 것이 자연스러운 흐름이다.

자주 묻는 질문

엑셀 브이룩업에서 #N/A 오류가 뜨는 이유는 무엇인가요?

가장 흔한 원인은 세 가지입니다. 첫째, 찾을값과 범위 기준 열의 데이터 타입(숫자 vs 텍스트)이 다른 경우. 둘째, 셀에 눈에 보이지 않는 앞뒤 공백이 포함된 경우. 셋째, 마지막 인수를 TRUE(근사치 일치)로 설정했는데 범위가 오름차순으로 정렬되지 않은 경우입니다. TRIM 함수로 공백을 제거하고, 마지막 인수를 FALSE로 명시하면 대부분 해결됩니다.

브이룩업 마지막 인수에 FALSE와 TRUE 중 무엇을 써야 하나요?

일반적인 데이터 조회에서는 반드시 FALSE(또는 0)를 사용해야 합니다. FALSE는 정확히 일치하는 값만 반환합니다. TRUE(또는 1)는 근사치 일치를 허용하는데, 범위가 오름차순으로 정렬되어 있지 않으면 엉뚱한 값을 반환합니다. 인수를 생략하면 기본값이 TRUE로 적용되므로, 항상 FALSE를 명시하는 것이 안전합니다.

브이룩업 열 번호는 어떻게 세나요?

열 번호는 지정한 범위의 첫 번째 열부터 1로 시작해 오른쪽으로 셉니다. 예를 들어 범위를 B:E로 설정했다면 B열=1, C열=2, D열=3, E열=4입니다. 시트 전체 기준의 열 번호(A=1, B=2…)와 혼동하면 잘못된 열이 반환되므로, 항상 지정한 범위 내 상대 순서로 계산해야 합니다.

브이룩업은 왼쪽 열의 값을 반환할 수 없나요?

맞습니다. VLOOKUP은 범위의 첫 번째(가장 왼쪽) 열에서 검색하고, 그 오른쪽 열에서만 값을 반환합니다. 반환하려는 열이 검색 기준 열보다 왼쪽에 있으면 VLOOKUP으로는 불가능합니다. 이 경우 INDEX+MATCH 조합을 쓰거나, 엑셀 365·2019 이상이라면 XLOOKUP을 사용하면 방향 제한 없이 조회할 수 있습니다.

수식을 복사할 때 범위가 자동으로 이동하는 문제를 어떻게 막나요?

범위에 절대참조($)를 적용하면 됩니다. =VLOOKUP(A2,$B$2:$D$100,3,FALSE)처럼 범위 앞에 $ 기호를 붙이면 수식을 복사해도 범위가 고정됩니다. 또는 범위를 엑셀 표(Table)로 변환하거나, Ctrl+F3으로 이름을 정의해 두면 $ 없이도 자동 고정됩니다.

Leave a Comment