소비/유용한 지식

엑셀 VLOOKUP 함수, TEXT 매칭이 잘 안 될 때.

LEEHK 2008. 7. 2. 19:44

table_array 의 첫번째 필드가 오름차순으로 정렬되어 있는지 확인해야 한다. 오름차순으로 정렬되어 있지 않다면 이상한 결과가 나올 수 있다.

HLOOKUP 함수를 사용할 때도 마찬가지이다.

 

 

 

 

 

 

 

 --------------------------------------------------------------------------------------------------------------------------------------------------------

* 참고 : VLOOKUP 함수 예제 (출처:MS EXCEL 도움말)

 

 

VLOOKUP

표 배열의 첫째 열에서 값을 찾고 표 배열의 다른 열에 있는 같은 행에서 값을 구합니다.

VLOOKUP에서 V는 세로를 의미합니다. 비교값이 찾으려는 데이터의 왼쪽 열에 있으면 HLOOKUP 대신 VLOOKUP을 사용합니다.

구문

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

lookup_value   표 배열 (배열: 여러 가지 결과를 만들거나 행과 열로 구성되는 인수 그룹에 대해 연산이 이루어지는 한 개의 수식을 작성하기 위해 사용됩니다. 배열 범위는 공통 수식을 공유하며 배열 상수는 한 개의 인수로 사용되는 상수 그룹입니다.)의 첫째 열에서 찾을 값입니다. lookup_value는 값 또는 참조일 수 있습니다. lookup_value가 table_array의 첫째 열에 있는 최소값보다 작으면 #N/A 오류 값이 반환됩니다.

table_array  2개 이상의 데이터 열입니다. 범위에 대한 참조 또는 범위 이름을 사용합니다. table_array의 첫째 열의 값은 lookup_value로 검색된 값입니다. 이러한 값은 텍스트, 숫자 또는 논리값이 될 수 있습니다. 대/소문자는 구분하지 않습니다.

    col_index_num  비교값과 같은 행에 있는 값을 표시할 table_array의 열 번호입니다. col_index_num이 1이면 table_array의 첫째 열에서 값을 구하고 col_index_num이 2이면 table_array의 둘째 열에서 값을 구합니다. col_index_num의 조건에 따라 다음과 같은 결과가 나타납니다.

    • 1보다 작으면 #VALUE! 오류 값이 반환됩니다.
    • table_array의 열 수보다 크면 #REF! 오류 값이 반환됩니다.

    range_lookup  정확하게 일치하는 값을 찾을 것인지, 근사값을 찾을 것인지를 결정하는 논리값입니다.

    • TRUE이거나 생략되면 정확한 값이나 근사값을 구합니다. 정확하게 일치하는 값이 없으면 lookup_value보다 작으면서 그 다음으로 가장 큰 값을 구합니다.

      table_array의 첫째 열에 있는 값은 반드시 오름차순으로 정렬해야 합니다. 그렇게 하지 않으면 정확한 값을 구하지 못할 수도 있습니다. 데이터 메뉴에서 정렬 명령을 선택하고 오름차순을 선택하여 값을 오름차순으로 정렬할 수 있습니다. 자세한 내용은 기본 정렬 순서를 참고하십시오.

    • FALSE이면 정확하게 일치하는 값만 찾습니다. 이 경우 table_array의 첫째 열에 있는 값을 정렬할 필요가 없습니다. table_array의 첫째 열에 lookup_value와 일치하는 값이 두 개 이상 있으면 먼저 발견된 값이 사용됩니다. 정확하게 일치하는 값이 없으면 #N/A 오류 값이 반환됩니다.

    주의

    • table_array의 첫째 열에서 텍스트 값을 검색할 때는 table_array의 첫째 열에 있는 데이터에 앞/뒤 공백을 두거나, 곧은 따옴표(' 또는 ")와 둥근 따옴표(‘ 또는 “)를 일관성 없이 사용하거나, 인쇄할 수 없는 문자를 사용하지 않도록 주의하십시오. 그럴 경우 정확하지 않은 값이나 예기치 않은 값이 구해질 수 있습니다. 텍스트 데이터를 삭제하기 위해 사용할 수 있는 함수에 대한 자세한 내용은 텍스트 및 데이터 함수를 참고하십시오.
    • 숫자 값이나 날짜 값을 검색할 때 table_array의 첫째 열에 있는 데이터를 텍스트 값으로 저장하지 않도록 주의하십시오. 그럴 경우 정확하지 않은 값이나 예기치 않은 값이 구해질 수 있습니다. 자세한 내용은 텍스트로 저장된 숫자를 숫자로 변환을 참고하십시오.
    • range_lookup이 FALSE이고 lookup_value가 텍스트이면 lookup_value에 와일드카드 문자, 물음표(?) 및 별표(*)를 사용할 수 있습니다. 물음표는 한 문자에 해당하고 별표는 모든 문자열에 해당합니다. 실제 물음표나 별표를 찾으려면 해당 문자 앞에 물결표(~)를 입력합니다.

      예제 1

      예제를 빈 워크시트에 복사하면 더 쉽게 이해할 수 있습니다.

      표시예제 복사 방법

      1. 빈 통합 문서 또는 워크시트를 만듭니다.
      2. 도움말 항목에서 예제를 선택합니다.

         참고   행 또는 열 머리글은 선택하지 마십시오.

        도움말에서 예제 선택

        도움말에서 예제 선택
      3. Ctrl+C를 누릅니다.
      4. 워크시트에서 셀 A1을 선택하고 Ctrl+V를 누릅니다.
      5. 결과 보기와 결과를 반환하는 수식 보기를 전환하려면 Ctrl+`(억음 악센트 기호)를 누르거나 수식 분석 그룹의 수식 탭에서 수식 표시 단추를 클릭합니다.

      다음은 대기 속성 표의 밀도 열을 검색하여 점도 및 온도 열에서 해당 값을 찾는 예제입니다. (여기에 사용된 값은 해면에서의 대기가 섭씨 0도 또는 1기압일 경우입니다.)

       
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      A B C
      밀도 점도 온도
      0.457 3.55 500
      0.525 3.25 400
      0.616 2.93 300
      0.675 2.75 250
      0.746 2.57 200
      0.835 2.38 150
      0.946 2.17 100
      1.09 1.95 50
      1.29 1.71 0
      수식 설명(결과)
      =VLOOKUP(1,A2:C10,2) 근사값을 사용하여 A열에서 값 1을 검색하고, A열에서 1보다 작거나 같은 값 중 최대값(즉, 0.946)을 찾은 다음, 같은 행에 있는 B열에서 값을 구합니다. (2.17)
      =VLOOKUP(1,A2:C10,3,TRUE) 근사값을 사용하여 A열에서 값 1을 검색하고, A열에서 1보다 작거나 같은 값 중에서 최대값(즉, 0.946)을 찾은 다음, 같은 행에 있는 C열에서 값을 구합니다. (100)
      =VLOOKUP(.7,A2:C10,3,FALSE) 정확하게 일치하는 값을 사용하여 A열에서 값 .7을 검색합니다. A열에는 정확하게 일치하는 값이 없기 때문에 오류가 반환됩니다. (#N/A)
      =VLOOKUP(0.1,A2:C10,2,TRUE) 정확하게 일치하는 값을 사용하여 A열에서 값 0.1을 검색합니다. 0.1은 A열의 최소값보다 작기 때문에 오류가 반환됩니다. (#N/A)
      =VLOOKUP(2,A2:C10,2,TRUE) 근사값을 사용하여 A열에서 값 2를 검색하고, A열에서 2보다 작거나 같은 값 중 최대값(즉, 1.29)을 찾은 다음, 같은 행에 있는 B열에서 값을 구합니다. (1.71)

      예제 2

      예제를 빈 워크시트에 복사하면 더 쉽게 이해할 수 있습니다.

      표시예제 복사 방법

      1. 빈 통합 문서 또는 워크시트를 만듭니다.
      2. 도움말 항목에서 예제를 선택합니다.

         참고   행 또는 열 머리글은 선택하지 마십시오.

        도움말에서 예제 선택

        도움말에서 예제 선택
      3. Ctrl+C를 누릅니다.
      4. 워크시트에서 셀 A1을 선택하고 Ctrl+V를 누릅니다.
      5. 결과 보기와 결과를 반환하는 수식 보기를 전환하려면 Ctrl+`(억음 악센트 기호)를 누르거나 수식 분석 그룹의 수식 탭에서 수식 표시 단추를 클릭합니다.

      다음은 아기 용품 표의 상품-ID 열을 검색하고, 원가 및 가산액 열에서 해당 값을 찾아 가격을 계산하고 조건을 테스트하는 예제입니다.

       
      1
      2
      3
      4
      5
      6
      A B C D
      상품-ID 상품 원가 가산액
      ST-340 유모차 145,000 30%
      BI-567 턱받이 3,500 40%
      DI-328 기저귀 21,400 35%
      WI-989 물티슈 5,000 40%
      AS-469 흡입기 2,500 45%
      수식 설명(결과)
      = VLOOKUP("DI-328", A2:D6, 3, FALSE) * (1 + VLOOKUP("DI-328", A2:D6, 4, FALSE)) 원가에 가산액 비율을 더해서 기저귀의 소매가를 계산합니다. (28,890)
      = (VLOOKUP("WI-989", A2:D6, 3, FALSE) * (1 + VLOOKUP("WI-989", A2:D6, 4, FALSE))) * (1 - 20%) 소매가에서 특별 할인가를 빼서 물티슈의 판매가를 계산합니다. (5,600)
      = IF(VLOOKUP(A2, A2:D6, 3, FALSE) >= 20000, "가산액 " & 100 * VLOOKUP(A2, A2:D6, 4, FALSE) &"%", "원가 20,000원 미만") 상품 원가가 20,000원보다 크거나 같으면 "가산액 nn%"가 표시됩니다. 그렇지 않을 경우 "원가 20,000원 미만"이 표시됩니다. (가산액 30%)
      = IF(VLOOKUP(A3, A2:D6, 3, FALSE) >= 20000, "가산액 " & 100 * VLOOKUP(A3, A2:D6, 4, FALSE) &"%", "원가 " & VLOOKUP(A3, A2:D6, 3, FALSE)) 상품 원가가 20,000원보다 크거나 같으면 "가산액 nn%"가 표시됩니다. 그렇지 않을 경우 원가가 표시됩니다. (원가 3,500)

      예제 3

      예제를 빈 워크시트에 복사하면 더 쉽게 이해할 수 있습니다.

      표시예제 복사 방법

      1. 빈 통합 문서 또는 워크시트를 만듭니다.
      2. 도움말 항목에서 예제를 선택합니다.

         참고   행 또는 열 머리글은 선택하지 마십시오.

        도움말에서 예제 선택

        도움말에서 예제 선택
      3. Ctrl+C를 누릅니다.
      4. 워크시트에서 셀 A1을 선택하고 Ctrl+V를 누릅니다.
      5. 결과 보기와 결과를 반환하는 수식 보기를 전환하려면 Ctrl+`(억음 악센트 기호)를 누르거나 수식 분석 그룹의 수식 탭에서 수식 표시 단추를 클릭합니다.

      다음은 사원 표의 ID 열을 검색하고, 다른 열에서 값을 찾아 나이를 계산하고 오류 조건을 테스트하는 예제입니다.

       
      1
      2
      3
      4
      5
      6
      7
      A B C D E
      ID 이름 직함 생년월일
      1 소미 영업 사원 1968/12/08
      2 덕훈 영업 담당 부사장 1952/02/19
      3 가을 영업 사원 1963/08/30
      4 주현 영업 사원 1958/09/19
      5 하라 영업 과장 1955/03/04
      6 찬진 영업 사원 1963/07/02
      수식 설명(결과)
      =INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) 2004 회계연도를 대상으로 ID가 5인 사원의 나이를 구합니다. YEARFRAC 함수를 사용하여 회계연도 마지막 날짜에서 생년월일을 빼고 INT 함수를 사용하여 그 결과를 정수로 표시합니다. (49)
      =IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "사원을 찾을 수 없습니다", VLOOKUP(5,A2:E7,2,FALSE)) ID가 5인 사원이 있으면 사원의 성을 표시합니다. 그렇지 않을 경우 "사원을 찾을 수 없습니다"라는 메시지를 표시합니다. (선)

      VLOOKUP 함수가 #NA 오류 값을 반환하면 ISNA 함수는 TRUE 값을 반환합니다.

      =IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "사원을 찾을 수 없습니다", VLOOKUP(15,A3:E8,2,FALSE)) ID가 15인 사원이 있으면 사원의 성을 표시합니다. 그렇지 않을 경우 "사원을 찾을 수 없습니다"라는 메시지를 표시합니다. (사원을 찾을 수 없습니다)

      VLOOKUP 함수가 #NA 오류 값을 반환하면 ISNA 함수는 TRUE 값을 반환합니다.

      =VLOOKUP(4,A2:E7,2,FALSE) & "" & VLOOKUP(4,A2:E7,3,FALSE) & "님은 " & VLOOKUP(4,A2:E7,4,FALSE) & "입니다." ID가 4인 사원을 대상으로 세 번째 셀의 값을 완전한 문장으로 연결합니다. (왕주현님은 영업 사원입니다.)

       참고   위 예제의 첫 번째 수식에는 YEARFRAC 함수가 사용되었습니다. 이 함수를 사용할 수 없고 #NAME? 오류가 나타나면 분석 도구 추가 기능을 설치 및 로드합니다.