본문으로 건너뛰기
ArumSoft Learning
EN
    VLOOKUPExcel

    엑셀 VLOOKUP 안될 때: #N/A, 엉뚱한 값, #REF!

    적용 버전: Microsoft 365와 웹용 Excel을 포함한 모든 버전 · 업데이트

    빠른 답네 번째 인수에 FALSE를 넣으세요. 빠뜨리면 VLOOKUP이 유사 일치로 찾아서 엉뚱한 행의 값을 돌려줄 수 있어요: =VLOOKUP(F2,$A$2:$C$100,3,FALSE). $ 기호는 수식을 복사할 때 범위가 밀리지 않게 해 줘요.

    원인별 해결 방법

    1. 네 번째 인수를 빠뜨렸어요(유사 일치)
    2. 표 범위를 $로 고정하지 않았어요
    3. 열 번호(col_index_num)가 틀렸어요(#REF! 또는 다른 열 값)
    4. 표 중간에 열을 넣거나 지웠어요
    5. 가져올 값이 찾는 열보다 왼쪽에 있어요
    6. 값이 실제로는 달라요(공백, 텍스트 숫자)

    1네 번째 인수를 빠뜨렸어요(유사 일치)

    range_lookup을 생략하면 VLOOKUP은 TRUE, 즉 유사 일치로 찾아요. 첫 열이 정렬돼 있다고 가정하고, 정확한 값이 없으면 그보다 작은 값 중 가장 가까운 값을 돌려줘요. 정렬이 안 된 데이터에서는 엉뚱한 행의 값을 주거나 있는 값도 #N/A를 낼 수 있어요.

    이렇게 확인해요

    =VLOOKUP(F2,A2:C100,3)처럼 인수가 세 개뿐이고, 목록에 없는 코드인데도 값이 나오거나 바로 윗행의 값이 나와요.

    해결 방법

    =VLOOKUP(F2,A2:C100,3,FALSE)

    FALSE 대신 0을 써도 같아요. 유사 일치는 세율 구간이나 학점 기준표처럼 첫 열을 일부러 정렬해 둔 경우에만 쓰세요.

    직접 해 보기: FALSE를 빠뜨린 VLOOKUP

    목록에 ID 103은 없는데, F2의 =VLOOKUP(E2,A2:C6,3)은 ID 102의 가격인 20000을 돌려줘요. 예제를 눌러 정확히 일치로 바꿔 보세요. 그다음 E2에 목록에 있는 ID를 입력해 보세요.

    2표 범위를 $로 고정하지 않았어요

    이렇게 확인해요

    위쪽 몇 행은 잘 되는데 아래로 갈수록 있는 값도 #N/A가 나와요. 아래쪽 수식을 클릭해 보면 범위가 A12:C111처럼 밀려 내려가 있어요.

    해결 방법

    표 범위를 $ 기호로 고정하세요. 수식에서 범위를 선택하고 F4를 누르면 돼요.

    =VLOOKUP(F2,$A$2:$C$100,3,FALSE)

    예방 팁. 목록을 표(삽입 > 표)로 만들고 =VLOOKUP(F2,제품,3,FALSE)처럼 표 이름으로 참조하세요. 표 참조는 밀리지 않고 새 행이 생기면 같이 늘어나요.

    3열 번호(col_index_num)가 틀렸어요(#REF! 또는 다른 열 값)

    열 번호는 시트의 A열이 아니라 표 범위의 첫 열부터 세요.

    이렇게 확인해요

    • #REF!: 열 번호가 범위의 열 수보다 커요. =VLOOKUP(F2,A2:C100,4,FALSE)는 3열짜리 범위에서 4번째 열을 달라는 거예요.
    • #VALUE!: 열 번호가 1보다 작아요.
    • 다른 열의 값이 나와요: 범위는 B열부터인데 A열부터 셌어요.

    해결 방법

    범위의 왼쪽 끝부터 다시 세거나, 원하는 열까지 범위를 넓히세요.

    4표 중간에 열을 넣거나 지웠어요

    숫자로 적은 열 번호는 열이 움직여도 바뀌지 않아요. 표 범위 안에 열을 하나 넣으면 3이 다른 열을 가리키게 되고, 오류 없이 엉뚱한 값이 나와요.

    해결 방법

    MATCH로 머리글을 찾아 열 번호를 정하게 하세요.

    =VLOOKUP(F2,$A$2:$D$100,MATCH("가격",$A$1:$D$1,0),FALSE)

    또는 결과 열을 직접 가리키는 XLOOKUP으로 바꾸세요(Excel 2021, Microsoft 365).

    =XLOOKUP(F2,$A$2:$A$100,$C$2:$C$100)

    5가져올 값이 찾는 열보다 왼쪽에 있어요

    VLOOKUP은 범위의 첫 열에서만 찾고, 그 오른쪽 열만 돌려줘요. C열의 이메일로 찾아서 A열의 이름을 가져올 수는 없어요.

    해결 방법

    XLOOKUP을 쓰세요.

    =XLOOKUP(F2,$C$2:$C$100,$A$2:$A$100)

    모든 버전에서 되는 INDEX와 MATCH도 있어요.

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

    6값이 실제로는 달라요(공백, 텍스트 숫자)

    FALSE도 넣고 범위도 맞는데 #N/A가 남아 있다면, 대개 눈에 안 보이는 차이 때문이에요. 공백이 붙었거나 한쪽은 텍스트 숫자, 다른 쪽은 진짜 숫자인 경우예요.

    해결 방법

    =VLOOKUP(TRIM(F2),$A$2:$C$100,3,FALSE)

    코드가 텍스트로 저장돼 있다면 찾을 값에 F2&""를, 숫자라면 --F2를 쓰세요. 자세한 내용은 XLOOKUP #N/A 해결 가이드에 있고, VLOOKUP에도 똑같이 적용돼요.

    정말 없는 값일 때 #N/A 대신 메시지를 보여 주려면 이렇게 쓰세요.

    =IFNA(VLOOKUP(F2,$A$2:$C$100,3,FALSE),"없음")

    그래도 안 된다면

    • 수식이 ,FALSE)나 ,0)으로 끝나나요?
    • 표 범위의 행과 열이 $로 고정돼 있나요?
    • 열 번호를 A열이 아니라 범위의 첫 열부터 셌나요?
    • 찾을 값이 범위의 첫 열에 있나요?
    • =F2=A5로 직접 비교하고, 두 셀의 =LEN()과 =ISNUMBER()를 확인하세요.
    • 찾을 값이 255자를 넘으면 VLOOKUP은 #VALUE!를 내요. XLOOKUP이나 INDEX와 MATCH를 쓰세요.