목차
이 자습서에서는 VLOOKUP 함수를 사용하여 다른 워크시트 또는 통합 문서에서 데이터를 복사하고, 여러 시트에서 Vlookup하고, 동적으로 조회하여 다른 시트에서 다른 셀로 값을 반환하는 방법을 보여줍니다.
엑셀에서 어떤 정보를 조회할 때, 모든 데이터가 같은 시트에 있는 경우는 드물다. 더 자주 여러 시트 또는 심지어 다른 통합 문서에서 검색해야 합니다. 좋은 소식은 Microsoft Excel에서 이 작업을 수행하는 여러 가지 방법을 제공한다는 것이며 나쁜 소식은 모든 방법이 표준 VLOOKUP 수식보다 조금 더 복잡하다는 것입니다. 그러나 약간의 인내심을 가지고 알아낼 것입니다 :)
두 시트 사이에서 VLOOKUP하는 방법
먼저 가장 간단한 사례를 조사해 보겠습니다. VLOOKUP을 사용하여 다른 워크시트에서 데이터를 복사합니다. 동일한 워크시트에서 검색하는 일반 VLOOKUP 수식과 매우 유사합니다. 차이점은 table_array 인수에 시트 이름을 포함하여 조회 범위가 있는 워크시트를 수식에 알려준다는 것입니다.
다른 시트에서 VLOOKUP에 대한 일반 수식은 다음과 같습니다.
VLOOKUP(lookup_value, Sheet!range, col_index_num, [range_lookup])예를 들어 1월 보고서의 판매 수치를 요약<으로 가져오겠습니다. 2> 시트. 이를 위해 다음 인수를 정의합니다.
- Lookup_values 는 요약 시트의 A열에 있으며VLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
마지막으로 매우 표준적인 이 VLOOKUP 수식은 West 시트에서 A2:C6 범위의 첫 번째 열에서 A2 값을 검색하고 두 번째 열에서 일치합니다. 그게 다야!
여러 시트의 데이터를 다른 셀로 반환하는 동적 VLOOKUP
먼저, 이 문맥에서 "동적"이라는 단어가 정확히 무엇을 의미하고 이 수식이 어떻게 될 것인지 정의해 보겠습니다. 이전 데이터와 다릅니다.
여러 스프레드시트로 분할된 동일한 형식의 많은 양의 데이터가 있는 경우 다른 시트에서 다른 셀로 정보를 추출할 수 있습니다. 아래 이미지는 개념을 설명합니다.
고유 식별자를 기반으로 특정 시트에서 값을 가져오는 이전 수식과 달리 이번에는 여러 시트에서 한 번에 값을 추출하려고 합니다. 시간.
이 작업에는 두 가지 솔루션이 있습니다. 두 경우 모두 약간의 준비 작업을 수행하고 각 조회 시트의 데이터 셀에 대해 명명된 범위를 만들어야 합니다. 이 예에서는 다음 범위를 정의했습니다.
- East_Sales - East 시트의 A2:B6
- North_Sales - A2: 북쪽 시트의 B6
- South_Sales - 남쪽 시트의 A2:B6
- West_Sales - 서쪽 시트의 A2:B6
VLOOKUP 및 중첩 IF
조회할 시트 수가 적당한 경우 중첩 IF 함수를 사용할 수 있습니다.사전 정의된 셀(이 경우 셀 B1~D1)의 키워드를 기반으로 시트를 선택합니다.
A2에 조회 값이 있는 경우 수식은 다음과 같습니다.
=VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)
영어로 번역하면 IF 부분은 다음과 같습니다.
B1이 East 인 경우 East_Sales 라는 범위를 찾습니다. B1이 North 인 경우 North_Sales 라는 범위를 찾습니다. B1이 South 인 경우 South_Sales 라는 범위를 찾습니다. B1이 West 인 경우 West_Sales 라는 범위를 찾습니다.
IF에서 반환된 범위는 VLOOKUP의 table_array 로 이동합니다. 해당 시트의 두 번째 열에서 일치하는 값.
조회 값($A2 - 절대 열 및 상대 행) 및 IF의 논리적 테스트(B$1 - 상대 열)에 대한 혼합 참조의 영리한 사용 및 절대 행) 수식을 변경 없이 다른 셀에 복사할 수 있습니다. - Excel은 행과 열의 상대적 위치를 기반으로 참조를 자동으로 조정합니다. 필요한 만큼 열과 행을 줄이고 다음 결과를 얻습니다.
INDIRECT VLOOKUP
많은 시트로 작업할 때 여러 중첩 수준이 공식을 만들 수도 있습니다. 길고 읽기 어렵다. 훨씬 더 좋은 방법은 INDIRECT:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
의 도움으로 동적 vlookup 범위 를 만드는 것입니다.명명된 범위(B1)의 고유 부분과 공통 부분(_Sales). 이것은 INDIRECT가 Excel에서 이해할 수 있는 범위 이름으로 변환하는 "East_Sales"와 같은 텍스트 문자열을 생성합니다.
결과적으로 여러 시트에서 훌륭하게 작동하는 간결한 공식을 얻습니다.
엑셀에서 시트와 파일 간 Vlookup하는 방법입니다. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙기를 바랍니다!
연습 통합 문서 다운로드
Vlookup 여러 시트 예제(.xlsx 파일)
A2인 첫 번째 데이터 셀을 참조하십시오. - Table_array 는 Jan 시트의 범위 A2:B6입니다. 이를 참조하려면 범위 참조 앞에 시트 이름과 느낌표를 붙입니다: Jan!$A$2:$B$6.
수식을 다른 셀에 복사할 때 범위가 변경되지 않도록 절대 셀 참조로 범위를 잠그는 점에 유의하십시오.
Col_index_num 은 값을 복사하려고 하므로 2입니다. 테이블 배열의 두 번째 열인 열 B에서.
- Range_lookup 은 FALSE로 설정되어 정확히 일치하는 항목을 찾습니다.
인수를 종합하면 다음 수식을 얻을 수 있습니다.
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
수식을 열 아래로 드래그하면 다음 결과를 얻을 수 있습니다.
유사한 방식으로 Feb 및 Mar 시트의 데이터를 Vlookup할 수 있습니다.
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
팁 및 참고 사항:
- 시트 이름에 공백 또는 알파벳이 아닌 문자 가 포함된 경우 <와 같이 작은따옴표로 묶어야 합니다. 1>'1월 매출'!$A$2:$B$6 . 자세한 내용은 Excel에서 다른 시트를 참조하는 방법을 참조하세요.
- 수식에 시트 이름을 직접 입력하는 대신 조회 워크시트로 전환하여 범위를 선택할 수 있습니다. Excel은 올바른 구문으로 참조를 자동으로 삽입하므로 이름을 확인하고 문제를 해결하는 수고를 덜 수 있습니다.
다른 통합 문서에서 Vlookup
둘 사이의 VLOOKUP으로통합 문서의 경우 파일 이름을 대괄호 안에 포함하고 그 뒤에 시트 이름과 느낌표를 붙입니다.
예를 들어 1월 시트에서 A2:B6 범위의 A2 값을 검색하려면 Sales_reports.xlsx 통합 문서에서 다음 수식을 사용합니다.
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
자세한 내용은 Excel의 다른 통합 문서에서 VLOOKUP을 참조하세요.
전체 Vlookup IFERROR
이 있는 여러 시트 두 개 이상의 시트 사이를 조회해야 하는 경우 가장 쉬운 솔루션은 IFERROR와 함께 VLOOKUP을 사용하는 것입니다. 아이디어는 여러 IFERROR 함수를 중첩하여 여러 워크시트를 하나씩 확인하는 것입니다. 첫 번째 VLOOKUP이 첫 번째 시트에서 일치하는 항목을 찾지 못하면 다음 시트에서 검색하는 식입니다.
IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " 찾을 수 없음 "))이 접근 방식이 실제 데이터에서 어떻게 작동하는지 알아보기 위해 다음 예를 살펴보겠습니다. 아래는 West 및 East 시트에서 주문 번호를 찾아 항목 이름과 금액을 채우려는 Summary 테이블입니다.
먼저 항목을 가져올 것입니다. 이를 위해 East 시트의 A2에서 주문 번호를 검색하고 B 열( table_array A2:C6의 두 번째 열)에서 값을 반환하도록 VLOOKUP 수식에 지시합니다. 정확히 일치하는 항목이 없으면 West 시트에서 검색하십시오. 두 Vlookup이 모두 실패하면 "찾을 수 없음"을 반환합니다.
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
금액을 반환하려면열 인덱스 번호를 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
으로 변경하기만 하면 됩니다. 필요한 경우 VLOOKUP 함수마다 다른 테이블 배열을 지정할 수 있습니다. 이 예에서 두 조회 시트의 행 수는 동일하지만(A2:C6) 워크시트의 크기는 다를 수 있습니다.
여러 통합 문서에서 Vlookup
두 개 이상의 통합 문서 간 Vlookup을 수행하려면 통합 문서 이름을 대괄호로 묶고 시트 이름 앞에 넣으십시오. 예를 들어 두 개의 서로 다른 파일 ( Book1 및 Book2 )에서 단일 수식으로 Vlookup을 수행하는 방법은 다음과 같습니다.
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE),"Not found"))
열 인덱스 번호를 Vlookup 여러 열에 대해 동적으로 만들기
여러 열에서 데이터를 반환해야 하는 상황에서 col_index_num 을 동적으로 만들면 시간을 절약할 수 있습니다. 몇 가지 조정이 필요합니다.
- col_index_num 인수의 경우 지정된 배열의 열 수를 반환하는 COLUMNS 함수를 사용합니다. COLUMNS($A$1 :B$1). (행 좌표는 실제로 중요하지 않으며 임의의 행이 될 수 있습니다.)
- lookup_value 인수에서 열 참조를 $ 기호($A2)로 잠그십시오. 수식을 다른 열에 복사할 때 고정됩니다.
결과적으로 수식이 복사되는 열에 따라 다른 열에서 일치하는 값을 추출하는 일종의 동적 수식을 얻게 됩니다.
=IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))
B열에 입력하면 COLUMNS($A$1:B$1)2로 평가되어 테이블 배열의 두 번째 열에서 값을 반환하도록 VLOOKUP에 지시합니다.
C열에 복사하면(즉, 수식을 B2에서 C2로 드래그한 경우) B$1은 C$1로 변경됩니다. 열 참조는 상대적입니다. 결과적으로 COLUMNS($A$1:C$1)은 VLOOKUP이 세 번째 열의 값을 반환하도록 강제하는 3으로 평가됩니다.
이 수식은 2~3개의 조회 시트에 적합합니다. 더 있으면 반복적인 IFERROR가 너무 번거로워집니다. 다음 예는 좀 더 복잡하지만 훨씬 더 우아한 접근 방식을 보여줍니다.
INDIRECT를 사용하여 여러 시트 Vlookup
Excel에서 여러 시트 사이를 Vlookup하는 또 다른 방법은 VLOOKUP과 간접 함수. 이 방법은 약간의 준비가 필요하지만 결국 여러 스프레드시트에서 Vlookup에 대한 보다 간결한 수식을 갖게 됩니다.
시트 간 Vlookup에 대한 일반 수식은 다음과 같습니다.
VLOOKUP( lookup_value , INDIRECT("'"&INDEX( Lookup_sheets , MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & " '! lookup_range "), lookup_value )>0), 0)) & "'! table_array "), col_index_num , FALSE)여기서:
- Lookup_sheets - 조회 시트 이름으로 구성된 명명된 범위입니다.
- Lookup_value - 검색할 값.
- Lookup_range - 조회를 검색할 조회 시트의 열 범위value.
- Table_array - 룩업 시트의 데이터 범위.
- Col_index_num - 테이블 배열의 열 번호 값을 반환합니다.
수식이 올바르게 작동하려면 다음 주의 사항에 유의하세요.
- 배열 수식이므로 Ctrl + 키를 눌러 완료해야 합니다. Shift + Enter 키를 함께 누르십시오.
- 모든 시트는 동일한 열 순서 를 가져야 합니다.
- 모든 조회 시트에 하나의 테이블 배열을 사용하므로 <12 시트의 행 수가 다른 경우>가장 큰 범위 .
시트 간 Vlookup에 수식을 사용하는 방법
한 번에 여러 시트를 Vlookup하려면 다음을 수행합니다. 단계:
- 통합 문서의 어딘가에 모든 조회 시트 이름을 기록하고 해당 범위의 이름을 지정합니다(이 경우 Lookup_sheets ).
- A2 값( lookup_value )
- 범위 A2:A6( lookup_range )에서 검색 4개의 워크시트( 동 , 북 , 남 및 서 ),
- 열 B에서 일치하는 값 가져오기, 데이터 범위 A2:C6( table_array )의 열 2( col_index_num )입니다.
위의 인수를 사용하면 수식은 다음과 같은 형태를 취합니다.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
절대 셀 참조를 사용하여 두 범위($A$2:$A$6 및 $A$2:$C$6)를 잠급니다.
결과적으로 4개의 시트에서 주문 번호를 조회하고 해당 항목을 검색하는 공식을 얻었습니다. 특정 주문 번호가 없으면 14행과 같이 #N/A 오류가 표시됩니다.
금액을 반환하려면 col_index_num에서 2를 3으로 바꾸십시오. 금액이 테이블 배열의 세 번째 열에 있으므로 인수:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)
표준 #N/A 오류 표기를 자신의 텍스트로 바꾸려면 수식을 IFNA 함수로:
=IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Not found")
통합 문서 간 Vlookup 여러 시트
이 일반 수식(또는 그 변형)도 사용할 수 있습니다. 다른 통합 문서 의 여러 시트를 Vlookup합니다. 이를 위해 아래 수식과 같이 INDIRECT 내에서 통합 문서 이름을 연결합니다.
=IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Not found")
시트 간 Vlookup 및 여러 열 반환
여러 열에서 데이터를 가져오려는 경우 열, 다중 셀 배열 수식 을 사용하면 한 번에 처리할 수 있습니다. 이러한 수식을 만들려면 col_index_num 인수에 대한 배열 상수를 제공합니다.
이 예에서는 항목 이름(열 B)과 금액(열 C)을 반환하려고 합니다. 각각 테이블 배열의 두 번째 및 세 번째 열입니다. 따라서 필요한 배열은{2,3}.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)
여러 셀에 수식을 올바르게 입력하려면 다음과 같이 해야 합니다.
- 첫 번째 행에서 채울 모든 셀을 선택합니다(이 예에서는 B2:C2).
- 수식을 입력하고 Ctrl + Shift + Enter를 누릅니다. 이렇게 하면 선택한 셀에 동일한 수식이 입력되어 각 열에 다른 값이 반환됩니다.
- 수식을 나머지 행으로 드래그합니다.
이 공식의 작동 방식
로직을 더 잘 이해하기 위해 이 기본 공식을 개별 함수로 분석해 보겠습니다.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
수식의 역할은 다음과 같습니다.
COUNTIF 및 INDIRECT
간단히 말해서 INDIRECT는 모든 조회 시트에 대한 참조를 작성하고 COUNTIF는 조회 발생 횟수를 계산합니다. 각 시트의 값(A2):
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
자세히:
먼저 범위 이름(Lookup_sheets)과 범위 참조($A$2: $A$6), 올바른 위치에 아포스트로피와 느낌표를 추가하여 외부 참조를 만들고 결과 텍스트 문자열을 INDIRECT 함수에 공급하여 조회 시트를 동적으로 참조합니다.
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF는 각 조회 시트의 A2:A6 범위에 있는 각 셀을 기본 페이지의 A2에 있는 값과 비교하여 확인합니다. 각 시트에 대한 일치 수를 반환합니다. 데이터 세트에서 A2(101)의 주문 번호는 West 시트에서 찾을 수 있습니다.명명된 범위이므로 COUNTIF는 다음 배열을 반환합니다.
{0;0;0;1}
다음으로 위 배열의 각 요소를 0과 비교합니다.
--({0; 0; 0; 1}>0)
이 결과는 다음과 같습니다. TRUE(0보다 큼) 및 FALSE(0과 같음) 값의 배열. 이중 단항(--)을 사용하여 1과 0으로 강제 변환하고 결과로 다음 배열을 얻습니다.
{0; 0; 0; 1}
이 작업은 조회 시트에 조회 값이 여러 번 포함되어 있는 상황을 처리하기 위한 추가 예방 조치입니다. 이 경우 COUNTIF는 1보다 큰 개수를 반환하지만 우리는 1과 0만 원합니다. 최종 배열(이유는 곧 이해하게 될 것입니다).
이러한 모든 변환 후 공식은 다음과 같습니다.
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX 및 MATCH
이 시점에서 고전적인 INDEX MATCH 조합 단계는 다음과 같습니다.
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
정확한 일치를 위해 구성된 MATCH 함수(마지막 인수에서 0)는 배열 { 0;0;0;1} 위치를 반환합니다. 즉, 4:
INDEX(Lookup_sheets, 4)
INDEX 함수는 반환된 숫자를 사용합니다. MATCH를 행 번호 인수(row_num)로 사용하고 명명된 범위 Lookup_sheets 의 4번째 값인 West 를 반환합니다. ~:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP 및 INDIRECT
INDIRECT 함수는 내부의 텍스트 문자열을 처리합니다.
INDIRECT("'"&"West"&"'!$A$2:$C$6")
그리고 변환합니다. 의 table_array 인수로 이동하는 참조로