본문 바로가기

업무 프로그램/MS 엑셀

엑셀 VLOOKUP 오류 총정리 1탄(ft. #N/A)

목차

    엑셀에서 VLOOKUP 함수는 아주 유용한 함수인 것과 동시에 오류가 많이 발생하는 함수이기도 합니다.

    사용 방법이 은근히 까다롭기 때문인데 이번 포스팅에서는 VLOOKUP함수에서 발생할 수 있는 오류를 정리해 보겠습니다.

    오늘은 VLOOKUP 함수에서 발생할 수 있는 오류중 #N/A에 대해서 다루어 보겠습니다.

     

    VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
    • lookup_value는 조회하려는 값입니다.
    • table_array는 값을 검색할 셀의 범위입니다.
    • col_index_num은 table_array에서 가져올 값이 몇 번째 열에 포함되는지를 넣어주는 것입니다.
    • range_lookup는 선택값이며 TRUE인 경우는 테이블의 첫 번째 열이 정렬되어 있어야 하며 가까운 값을 검색합니다.(유사 일치) FALSE인 경우 정확한 값을 검색합니다. 기본값은 TRUE입니다.

     

     


    1. 조회 값이 table_array의 첫 번째 열에 없는 경우

     

    조회 값이 table_array의 첫 번째 열에 없는 경우 - 예시
    조회 값이 table_array의 첫 번째 열에 없는 경우 - 예시

     

    이름을 가지고 업무시간을 가져오고 싶었지만 #N/A오류가 발생했습니다.

    F2에 입력된 수식입니다.

     

    =VLOOKUP(E2,A2:C4,2,FALSE)

    조회 값이 table_array의 첫 번째 열에 없는 경우 - 예시2
    조회 값이 table_array의 첫 번째 열에 없는 경우 - 예시2

     

    table_array의 첫 번째열 값을 기준으로 조회를 해야 합니다.

    이경우는 이름으로 업무시간을 조회하고 싶은 것이므로 이름이 첫 번째 열이 되어야 합니다.

     

    =VLOOKUP(E2,B2:C4,2,FALSE)

    조회 값이 table_array의 첫 번째 열에 없는 경우 - 수정
    조회 값이 table_array의 첫 번째 열에 없는 경우 - 수정

     

    즉 함수의 두 번째 인자의 범위를 B2:C4까지 지정해 주면 업무시간을 제대로 가져오는 것을 볼 수 있습니다.

    이런 문제를 해결하기 위해 INDEX/MATCH 또는 XLOOKUP 함수를 사용해야 합니다.

    해당 함수들의 사용법은 아래 포스팅에서 확인 가능합니다.

    VLOOKUP은 그만! XLOOKUP, INDEX/MATCH를 사용해 보자. (tistory.com)

     

     


    2. 정확히 일치하는 항목이 없는 경우

     

    정확히 일치하는 항목이 없는 경우 - 예시
    정확히 일치하는 항목이 없는 경우 - 예시

     

    range_lookup이 TRUE인 경우는 유사한 값을 가져오기 때문에 오류가 발생하지 않지만 FALSE인 경우는 정확히 일치하는 값을 가져와야 하는데 없는 경우 #N/A오류가 발생합니다.

    둘 중 한 가지를 해결해 줘야 하는데 range_lookup을 TRUE로 바꾸는 경우 나도 모르게 원치 않는 값을 가져올 수 있습니다.

     

    정확히 일치하는 항목이 없는 경우 - 예시2
    정확히 일치하는 항목이 없는 경우 - 예시2

     

    그러니 정확한 이름으로 조회해 오도록 수정하겠습니다.

     

    정확히 일치하는 항목이 없는 경우 - 수정
    정확히 일치하는 항목이 없는 경우 - 수정

     

    간혹 겉으로 봤을 때 텍스트가 일치하는데 값을 잘못 가져오는 경우 셀의 형식을 확인해야 합니다.

    숫자가 있으면 숫자형으로 되어 있어야 합니다.

     

     


    3. table_array가 오름차순으로 정렬되지 않은 경우

     

    오름차순 문제는 range_lookup값이 TRUE인 경우만 해당됩니다.

    FALSE는 정렬되지 않아도 됩니다.

     

    table_array가 오름차순으로 정렬되지 않은 경우 - 예시
    table_array가 오름차순으로 정렬되지 않은 경우 - 예시

     

    Dave의 업무시간을 조회하려고 하는데 40이 조회되지 않고 38이 조회되었습니다.

    Can - Dave - Jane순으로 정렬이 되면 해결됩니다.

     

    table_array가 오름차순으로 정렬되지 않은 경우 - 정렬
    table_array가 오름차순으로 정렬되지 않은 경우 - 정렬

     

    1. 이름 열의 데이터를 드래그하고 우클릭합니다.

    2. [정렬]에 커서를 가져갑니다.

    3. [텍스트 오름차순 정렬]을 클릭합니다.

    4. [선택 영역 확장]을 선택합니다.

    5. [정렬]을 클릭합니다.

     

    table_array가 오름차순으로 정렬되지 않은 경우 - 수정
    table_array가 오름차순으로 정렬되지 않은 경우 - 수정

     

    F2의 수식은 같지만 정렬을 하여 제대로 된 값을 가져오게 되었습니다.

     


    4. 값이 큰 부동 소수점인 경우

    흔히 발생하지는 않지만 셀에 시간 값이나 큰 10진수, 소수가 있다면 #N/A가 발생할 수 있습니다.

    이런 경우 ROUND를 사용하여 최대 5자리 소수로 반올림하여야 오류가 없어집니다.