기술

엑셀 VLOOKUP 안될 때 #N/A 원인별 해결법 (2026)

Daylongs ·
#엑셀 #VLOOKUP #엑셀브이룩업 #NA오류 #XLOOKUP #엑셀오류 #TRIM함수 #엑셀수식 #엑셀함수

엑셀 VLOOKUP 안될 때, 가장 먼저 어디를 봐야 하나요?

VLOOKUP이 안 될 때는 네 번째 인수를 FALSE로 쓰고, 찾는 값과 표의 값이 둘 다 같은 형식(숫자 또는 텍스트)이며 공백이 없는지 확인하면 대부분 풀립니다. #N/A는 “표의 첫 열에서 그 값을 못 찾았다”는 뜻이고, 원인은 거의 이 세 가지 안에 있습니다.

=VLOOKUP(찾는값, 표범위, 열번호, FALSE)
=VLOOKUP(A2, $F$2:$H$100, 2, FALSE)

수식 구조는 Microsoft의 VLOOKUP 함수 설명에 정리되어 있습니다. 찾는 값, 조회 범위, 반환할 열 번호, 일치 방식 이렇게 네 칸입니다. 실무에서 VLOOKUP이 틀어지는 지점은 대부분 이 네 칸 중 하나입니다.

저라면 오류가 났을 때 수식을 처음부터 다시 쓰지 않습니다. 아래 순서로 점검표를 한 번 훑는 것이 훨씬 빠릅니다.

순서확인할 것증상빠른 해결
1네 번째 인수값이 있는데 #N/A 또는 엉뚱한 값FALSE 또는 0 입력
2숫자 vs 텍스트눈으로는 같은데 못 찾음VALUE 또는 &"" 로 형식 통일
3공백, 보이지 않는 문자일부 행만 #N/ATRIM, CLEAN 적용
4조회 범위의 첫 열기준 열이 오른쪽에 있음범위를 기준 열부터 시작
5열 번호엉뚱한 열 값 또는 #REF!범위 안에서 다시 세기
6절대참조아래로 복사하니 뒤쪽만 #N/A$F$2:$H$100
7병합 셀, 스필첫 행만 되거나 #SPILL!병합 해제, 막힌 셀 비우기

엑셀 VLOOKUP #N/A 오류는 정확히 무슨 뜻인가요?

#N/A는 “해당 없음”이라는 뜻으로, VLOOKUP이 조회 범위의 첫 번째 열에서 찾는 값을 발견하지 못했을 때 돌려주는 값입니다. 계산이 깨진 것이 아니라 “없다”는 응답이라서, 진짜로 없는 값인지 형식 때문에 못 본 것인지부터 가려야 합니다.

Microsoft의 #N/A 오류 해결 문서도 같은 원인들을 나열합니다. 원본에 값이 없는 경우, 근사 일치 때문에 못 찾는 경우, 숫자와 텍스트가 다른 경우, 불필요한 공백이 있는 경우입니다.

가려내는 가장 빠른 방법은 의심 행 하나를 골라 표에서 Ctrl+F로 직접 찾아보는 것입니다. 검색으로는 나오는데 VLOOKUP만 못 찾는다면 형식 문제일 확률이 높고, 검색으로도 안 나온다면 정말 표에 없는 값입니다. 후자라면 수식은 정상이고 데이터를 채우거나 IFERROR로 “없음”을 표시하면 됩니다.

네 번째 인수를 비우면 왜 값이 틀리게 나오나요?

네 번째 인수(range_lookup)를 생략하거나 TRUE로 두면 VLOOKUP은 정확히 같은 값이 아니라 “가장 가까운 작은 값”을 찾는 근사 일치로 동작합니다. 이 모드는 첫 열이 오름차순으로 정렬되어 있다는 전제가 있어서, 정렬되지 않은 표에서는 틀린 값을 아무 경고 없이 돌려줍니다.

이 부분이 VLOOKUP에서 가장 위험한 함정입니다. #N/A는 눈에 띄니 차라리 낫고, 엉뚱한 값이 정상처럼 보이는 경우가 더 큽니다. 아래 예를 보세요.

사번(A열)이름(B열)
1001김하늘
1005이도윤
1003박서준

사번 1003의 이름을 =VLOOKUP(1003, A2:B4, 2)로 찾으면, 표가 정렬되어 있지 않아서 결과가 안정적이지 않습니다. 이진 탐색이 중간에서 1005를 보고 “너무 크다”고 판단해 위쪽으로 가기 때문에 박서준 대신 #N/A나 김하늘이 나올 수 있습니다. =VLOOKUP(1003, A2:B4, 2, FALSE)로 쓰면 위에서부터 하나씩 비교하므로 박서준이 정확히 나옵니다.

근사 일치가 필요한 경우도 있습니다. 점수 구간별 등급이나 매출 구간별 수수료율처럼 구간표를 읽을 때입니다. 그때는 첫 열을 오름차순으로 정렬해 두고 TRUE를 의도적으로 쓰세요. 이름, 코드, 사번처럼 “같은 값”을 찾는 작업이라면 항상 FALSE입니다.

숫자와 텍스트가 달라서 못 찾을 땐 어떻게 하나요?

찾는 값은 숫자 1001인데 표의 사번이 텍스트 “1001”이면 엑셀은 둘을 다른 값으로 취급해서 #N/A를 돌려줍니다. 겉으로는 똑같이 보이지만 내부 형식이 달라서 생기는 문제이며, 시스템에서 내려받은 데이터나 사번, 상품코드, 주민번호 앞자리 같은 열에서 특히 자주 나옵니다.

텍스트로 저장된 숫자는 몇 가지 단서로 알아볼 수 있습니다.

  • 셀 왼쪽 위에 초록색 삼각형이 있다
  • 숫자인데 왼쪽 정렬로 붙어 있다
  • =ISNUMBER(A2)가 FALSE를 돌려준다
  • 해당 열을 SUM으로 합했더니 0이거나 기대보다 작다

해결책은 한쪽 형식을 다른 쪽에 맞추는 것입니다. 원본 표를 건드리기 부담스럽다면 수식 쪽에서 맞추세요.

상황수식설명
찾는 값이 텍스트, 표는 숫자=VLOOKUP(VALUE(A2),$F$2:$H$100,2,FALSE)찾는 값을 숫자로 변환
찾는 값이 숫자, 표는 텍스트=VLOOKUP(A2&"",$F$2:$H$100,2,FALSE)찾는 값을 텍스트로 변환
형식이 섞여 있는지 모를 때=IFERROR(VLOOKUP(A2,$F$2:$H$100,2,FALSE),VLOOKUP(A2&"",$F$2:$H$100,2,FALSE))한 번 실패하면 텍스트로 재시도

표 쪽 열 전체를 숫자로 바꾸고 싶다면 빈 셀에 1을 입력해 복사하고, 변환할 범위를 선택한 뒤 선택하여 붙여넣기에서 곱하기를 고릅니다. 열이 많다면 데이터 탭의 텍스트 나누기에서 바로 마침을 눌러도 숫자로 바뀝니다. 원본을 바꾸기 전에는 반드시 사본을 저장해 두세요.

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

관련 상품 (쿠팡)

가격과 재고는 확인 시점에 따라 달라질 수 있습니다.

보이지 않는 공백이 있으면 VLOOKUP은 어떻게 반응하나요?

값 끝에 공백 한 칸만 있어도 “김하늘”과 “김하늘 “은 다른 텍스트이므로 VLOOKUP은 찾지 못합니다. 웹에서 복사했거나 다른 시스템에서 내보낸 데이터에는 앞뒤 공백, 중복 공백, 줄바꿈, 비분리 공백(CHAR(160))이 흔하게 숨어 있습니다.

먼저 진단합니다. 빈 셀에 두 수식을 넣어 길이를 비교하세요.

=LEN(A2)
=LEN(TRIM(A2))

두 값이 다르면 공백이 있다는 뜻입니다. 고치는 방법은 TRIM 함수를 찾는 값에 씌우는 것입니다.

=VLOOKUP(TRIM(A2), $F$2:$H$100, 2, FALSE)

TRIM으로도 안 풀린다면 웹 데이터의 비분리 공백일 가능성이 큽니다. TRIM은 일반 공백(문자 코드 32)만 지우기 때문입니다. 이럴 땐 치환 함수를 함께 씁니다.

=VLOOKUP(TRIM(SUBSTITUTE(A2, CHAR(160), " ")), $F$2:$H$100, 2, FALSE)

줄바꿈 같은 출력 불가능 문자는 CLEAN이 처리합니다. 다만 표 쪽 열에 공백이 있다면 찾는 값만 정리해서는 소용이 없습니다. 표의 기준 열을 TRIM으로 정리하고, 결과를 복사해서 값으로 붙여넣기한 다음 원본 열을 대체해야 합니다. 양쪽을 다 정리하는 것이 확실합니다.

열 번호와 조회 범위는 어떻게 잡아야 하나요?

열 번호는 시트의 열 문자가 아니라 지정한 범위 안에서 왼쪽부터 센 순서입니다. 조회 범위의 맨 왼쪽 열이 1이고, VLOOKUP은 그 1번 열에서만 값을 찾습니다. 그래서 찾을 기준 열이 범위의 첫 열이 아니면 시작부터 어긋납니다.

범위1번 열2번 열3번 열
F2:H100FGH
B2:E100BCD (4번이 E)
D2:H100DEF

자주 하는 실수가 둘 있습니다.

첫째, 기준 열이 범위 안에서 첫 열이 아닌 경우입니다. 사번이 C열인데 범위를 A2:D100으로 잡으면 VLOOKUP은 A열에서 사번을 찾으려 하므로 당연히 실패합니다. 범위를 C2:D100으로 줄이고 열 번호를 맞춰야 합니다.

둘째, 열을 추가하거나 삭제한 뒤 열 번호가 어긋나는 경우입니다. 숫자 2를 직접 쓰면 열 구조가 바뀔 때마다 수동으로 고쳐야 하므로, 열 번호 자리에 MATCH를 넣으면 머리글 이름으로 열을 찾아 줍니다.

=VLOOKUP(A2, $F$1:$K$100, MATCH("단가", $F$1:$K$1, 0), FALSE)

열 번호가 범위 폭보다 크면 #REF!가 나오고, 1보다 작으면 #VALUE!가 나옵니다. #N/A가 아니라 이 두 코드가 보인다면 찾는 값이 아니라 열 번호를 의심하세요.

아래로 복사했더니 일부만 #N/A가 나올 땐 무엇이 문제인가요?

대개 조회 범위에 절대참조($)를 붙이지 않아서 수식을 복사할 때 범위가 한 칸씩 같이 내려간 경우입니다. 첫 행은 맞는데 아래로 갈수록 표의 윗부분이 범위에서 빠지면서 뒤쪽 행만 #N/A가 됩니다.

실패 사례를 하나 들겠습니다. 아래 표는 구성한 예시이며 실제 파일이 아니라 흔한 패턴을 합친 것입니다.

행입력한 수식복사 후 범위결과
2행=VLOOKUP(A2,F2:G10,2,FALSE)F2:G10정상
3행=VLOOKUP(A3,F3:G11,2,FALSE)F3:G11표의 첫 행이 빠짐
4행=VLOOKUP(A4,F4:G12,2,FALSE)F4:G12표의 앞부분 두 행이 빠짐

F2의 값은 F3부터 시작하는 범위에서는 존재하지 않으니 #N/A가 납니다. 수정은 간단합니다.

=VLOOKUP(A2, $F$2:$G$10, 2, FALSE)

수식 입력줄에서 범위를 선택하고 F4 키를 누르면 $가 자동으로 붙습니다. 그리고 표가 계속 늘어난다면 $F$2:$G$10처럼 끝 행을 고정하지 말고 $F:$G처럼 열 전체를 쓰거나, 표를 Ctrl+T로 이름 있는 표로 바꿔서 범위가 자동으로 늘어나게 하세요.

병합 셀이나 #SPILL! 때문에 안 되는 경우도 있나요?

있습니다. 병합된 셀은 왼쪽 위 칸에만 값이 있고 나머지는 비어 있어서, 병합된 열을 기준 열로 쓰면 첫 행만 조회되고 나머지는 #N/A가 됩니다. 보고서 양식에서 이름이나 부서가 병합되어 있는 경우가 대표적입니다. 병합을 해제하고 빈 칸에 윗값을 채워야 합니다. 방법은 병합 해제 후 범위를 선택하고 이동 옵션에서 빈 셀을 고른 다음, =를 입력하고 위쪽 칸을 가리킨 뒤 Ctrl+Enter를 누르는 것입니다. 이후 값으로 붙여넣기까지 해 주세요.

#SPILL!은 Microsoft 365와 엑셀 2021 이상의 동적 배열 기능 때문에 생깁니다. 찾는 값 자리에 여러 셀 범위를 넣으면 결과가 아래로 흘러 나가는데, 그 칸이 비어 있지 않으면 #SPILL!이 뜹니다. 막고 있는 셀의 내용을 지우거나, 한 셀만 찾도록 A2처럼 단일 셀을 지정하면 됩니다. 구버전 엑셀에서는 같은 수식이 다르게 동작할 수 있으니, 공유하는 파일이라면 상대방 버전을 확인하세요.

VLOOKUP 대신 XLOOKUP을 쓰면 문제가 해결되나요?

XLOOKUP은 VLOOKUP의 약점을 대부분 없앴습니다. 기본이 정확히 일치 검색이라 네 번째 인수를 빼먹는 사고가 사라지고, 열 번호 대신 반환 범위를 직접 지정하므로 열을 추가해도 깨지지 않으며, 기준 열의 왼쪽 열도 가져올 수 있습니다. 구문과 지원 버전은 Microsoft의 XLOOKUP 함수 설명에서 확인할 수 있습니다.

=XLOOKUP(A2, $F$2:$F$100, $G$2:$G$100, "없음")

네 번째 칸의 “없음”은 못 찾았을 때 보여 줄 값이어서 IFERROR를 따로 감쌀 필요가 없습니다.

항목VLOOKUPXLOOKUP
기본 일치 방식근사 일치(주의)정확히 일치
반환 열 지정열 번호(숫자)반환 범위 직접 지정
기준 열 왼쪽 반환불가가능
못 찾았을 때#N/A (IFERROR 필요)네 번째 인수로 대체값
열 추가 시번호가 어긋날 수 있음영향 없음
사용 가능 버전모든 버전Microsoft 365, 엑셀 2021 이상

주의할 점이 하나 있습니다. 엑셀 2016과 2019에는 XLOOKUP이 없어서 열면 #NAME? 오류가 납니다. 내가 쓰는 버전은 문제가 없더라도 파일을 받는 사람이 구버전이면 깨집니다. 협업 파일이라면 VLOOKUP과 FALSE 조합을 유지하거나 INDEX와 MATCH를 쓰는 편이 안전합니다. 공유 범위가 나 혼자이거나 모두가 Microsoft 365라면 XLOOKUP으로 갈아타는 것을 권합니다. XLOOKUP도 형식 불일치와 공백 문제는 똑같이 겪으므로, 위의 TRIM과 형식 통일은 그대로 필요합니다.

그래도 안 풀리면 어떤 순서로 점검하나요?

위 원인을 한 번에 가르는 점검 수식이 있습니다. 문제 행 하나를 골라 아래처럼 빈 셀에 넣어 보세요.

점검수식기대하는 결과
찾는 값이 숫자인가=ISNUMBER(A2)표와 같은 값
표 쪽이 숫자인가=ISNUMBER(F2)위와 같은 값
공백 여부=LEN(A2)=LEN(TRIM(A2))TRUE
표에 값이 존재하는가=COUNTIF($F$2:$F$100,A2)1 이상
정확히 일치하는가=A2=F2TRUE

앞의 두 줄이 서로 다르면 형식 불일치이고, 세 번째가 FALSE면 공백이며, 네 번째가 0이면 형식이든 공백이든 이유가 있어 일치하지 않는 것입니다. 마지막 줄 =A2=F2가 FALSE인데 눈으로는 같다면, 숨은 문자가 있는 것입니다.

아무래도 모르겠다면 수식 탭의 수식 계산 기능으로 단계별 값을 확인하세요. 또 하나, 계산이 자동으로 안 되는 증상이라면 VLOOKUP의 문제가 아니라 계산 옵션이 수동일 수 있습니다. 이 경우는 엑셀 함수 안됨 원인별 해결법에서 계산 모드와 서식 문제를 따로 다뤘습니다.

함수 전체를 처음 정리하고 싶다면 엑셀 함수 치트시트에 조회 함수 비교가 있고, 기본기부터 다지려면 엑셀 필수 함수 10개가 출발점입니다. 오류 코드를 보다가 다른 계산에서 막혔다면 엑셀 빼기 함수 가이드도 같이 보세요.

작업 속도를 올리고 싶다면 직장인 필수 키보드 단축키 50개에서 F4(절대참조), Ctrl+Enter, Ctrl+T 같은 조합을 익혀 두면 좋습니다. 파일이 무거워 엑셀 자체가 버벅인다면 컴퓨터 느려졌을 때 해결법을 먼저 보시고, 반복 정리를 자동화하고 싶다면 업무용 AI 생산성 도구도 참고하세요.

본 글은 일반 정보이며, 메뉴 이름과 동작은 엑셀 버전과 언어 설정에 따라 다를 수 있습니다. XLOOKUP은 Microsoft 365와 엑셀 2021 이상에서 지원됩니다. 중요한 파일은 수정 전에 사본을 저장해 두고, 최신 동작은 Microsoft 공식 지원 문서를 확인하세요.

엑셀 VLOOKUP 안될 때 가장 먼저 무엇을 확인해야 하나요?

네 번째 인수부터 보세요. 비워 두거나 TRUE로 두면 근사 일치로 동작해서 엉뚱한 값이 나오거나 #N/A가 뜹니다. 정확히 같은 값을 찾으려면 =VLOOKUP(A2,$F$2:$H$100,2,FALSE)처럼 FALSE(또는 0)를 쓰세요. 그다음 찾는 값과 표의 값이 둘 다 숫자인지, 공백이 붙지 않았는지 순서로 봅니다.

VLOOKUP에서 #N/A 오류는 왜 나오나요?

엑셀이 조회 범위 첫 번째 열에서 찾는 값을 못 찾았다는 뜻입니다. 실제로 값이 없을 수도 있지만, 눈에는 같아 보여도 한쪽이 텍스트이고 다른 쪽이 숫자이거나, 끝에 공백이 붙었거나, 조회 범위가 아래로 밀려 값이 범위 밖으로 나간 경우가 더 흔합니다.

숫자인데 VLOOKUP이 못 찾아요. 텍스트와 숫자는 어떻게 맞추나요?

찾는 값 쪽을 바꾸는 방법이 가장 안전합니다. 찾는 값이 텍스트라면 VALUE(A2) 또는 A2*1로 숫자로 바꾸고, 반대로 표 쪽이 텍스트라면 찾는 값을 A2&""로 텍스트로 만드세요. 셀 왼쪽 위에 초록 삼각형이 있으면 텍스트로 저장된 숫자일 가능성이 큽니다.

VLOOKUP 값 뒤에 공백이 붙어 있는지 어떻게 알아내나요?

빈 셀에 =LEN(A2)와 =LEN(TRIM(A2))를 각각 넣어 비교하세요. 두 값이 다르면 앞뒤 또는 중복 공백이 있다는 뜻입니다. 해결은 =VLOOKUP(TRIM(A2),표범위,2,FALSE)처럼 찾는 값에 TRIM을 씌우거나, 원본 열을 TRIM으로 정리한 뒤 값으로 붙여넣는 것입니다.

VLOOKUP 열 번호(col_index_num)는 어떻게 세나요?

범위의 맨 왼쪽 열이 1입니다. 시트의 열 문자가 아니라 지정한 범위 안에서 센다는 점이 핵심입니다. F2:H100을 범위로 잡았다면 F열이 1, G열이 2, H열이 3입니다. 범위 밖의 열 번호를 쓰면 #REF! 오류가 납니다.

VLOOKUP 수식을 아래로 복사하면 결과가 틀려요.

조회 범위에 절대참조($)가 없어서 복사할 때 범위가 같이 내려가는 경우입니다. $F$2:$H$100처럼 행과 열 앞에 $를 붙이거나 F4 키를 누르세요. 표를 이름 있는 표(Ctrl+T)로 바꾸면 구조적 참조로 범위가 자동으로 유지됩니다.

VLOOKUP은 왜 찾는 값의 왼쪽 열을 가져오지 못하나요?

VLOOKUP은 범위의 첫 번째 열에서만 값을 찾고 그 오른쪽 열을 반환하도록 만들어졌기 때문입니다. 왼쪽 열을 가져오려면 INDEX와 MATCH를 조합하거나, Microsoft 365와 엑셀 2021 이상에서는 XLOOKUP을 쓰면 됩니다.

XLOOKUP은 어떤 엑셀 버전에서 쓸 수 있나요?

Microsoft 365와 엑셀 2021 이상에서 쓸 수 있습니다. 엑셀 2016과 2019에는 없어서 열면 #NAME? 오류가 나므로, 구버전 사용자와 공유하는 파일이라면 VLOOKUP 또는 INDEX와 MATCH를 유지하는 편이 안전합니다.

#N/A를 아예 안 보이게 하려면 IFERROR를 써도 되나요?

원인을 확인한 뒤에 쓰는 것이 원칙입니다. IFERROR는 #N/A뿐 아니라 #REF!, #VALUE! 등 모든 오류를 가려 버려서 열 번호 오타 같은 진짜 실수까지 숨깁니다. 값이 없을 수 있다는 것이 정상 상황일 때만 =IFERROR(VLOOKUP(...),"없음")처럼 쓰세요.

병합된 셀이 있으면 VLOOKUP이 안 되나요?

병합 셀은 왼쪽 위 셀에만 값이 있고 나머지는 비어 있습니다. 병합된 열을 기준 열로 쓰면 첫 행만 찾아지고 나머지는 #N/A가 됩니다. 병합을 풀고 빈 칸을 위의 값으로 채운 뒤 조회하세요.

VLOOKUP 결과가 #SPILL!로 나와요.

Microsoft 365에서 찾는 값에 한 셀이 아닌 범위를 넣으면 결과가 여러 칸으로 흘러 나오는데, 그 아래 칸이 비어 있지 않으면 #SPILL!이 뜹니다. 막고 있는 셀 내용을 지우거나, 한 셀만 참조하도록 수식을 고치세요.

공유하기

관련 글