2017-04-27 1 views
-1

열 A에 부품 번호가 있고 열 B에 위치하는 "마스터"시트가 있습니다. 열 A에 부품 번호가 약 200 매 있습니다. 어떻게 모든 시트에 VLOOKUP을 적용하여 모든 부품 모든 시트의 번호는 B 열에 위치 정보가 있습니까? 수동으로하는 것은 영원히 필요합니다. 감사합니다.모든 시트에 VLOOKUP

+1

모든 200 개의 시트를 반복하고 모든 시트의 B 열에'vlookup '수식을 삽입하는 매크로를 작성하십시오. –

+0

부품 번호가 지정된 시트가 어떤 식 으로든 이름이 지정되고 정렬되거나 정렬됩니까? – Fritz

+0

모든 시트에는 작업 이름 (Job-123-top, Job-123-btm) 등이 있으며 최상의 숫자 순으로 정렬됩니다. – Noob2Java

답변

0

룩업 값이 포함 된 시작 셀이 A2 인 것으로 가정하면 Master 시트에서 데이터 조회를 수행하는 한 가지 방법입니다. 이것은 또한 모든 시트가 같은 통합 문서에있는 것으로 가정합니다

=VLOOKUP(A2,Master!$A$2:$B$11,2) 

각 인수는 왼쪽에서 오른쪽으로 무엇을하는지에 대한 설명 :

  • A2 - 200 장 중 하나에서 전지 포함하는 조회 값. (조회 값이 포함 된 셀이 될 수 있습니다.)
  • Master은 조회 할 데이터가 들어있는 시트의 이름입니다.
  • $A$2Master 시트에서 조회 할 테이블 데이터의 왼쪽 상단 셀이며 조회 테이블의 왼쪽 상단 셀을 고정해야하기 때문에 $ sign을 사용하려고합니다.
  • $B$11Master 시트에서 검색 할 테이블의 오른쪽 하단 셀이며 조회 테이블의 오른쪽 하단 셀을 고정해야하기 때문에 $ sign을 사용하려고합니다.
  • 2 이것은 성공적인 검색을 위해 반환 할 값을 포함하는 열 인덱스입니다. 열 인덱스는 1에서 시작하여 오른쪽으로 증가합니다. 인덱스 1의 열은 조회 값을 포함합니다.

    : 시나리오에서, 인덱스 1은

테이블에없는 빈 셀 또는 셀 처리하기 위해 당신과 같이이 공식을 확장 할 수 있습니다 열 A와 2 의지 인덱스 컬럼 B의 인덱스를 지정하는 것입니다

=IF(ISNA(VLOOKUP(A2,Master!$A$2:$B$11,2)),"",VLOOKUP(A2,Master!$A$2:$B$11,2)) 

이 수식은 조회를 수행하여 찾고있는 값을 찾지 못하면 셀을 비워 둡니다. 그렇지 않으면 발견 된 데이터로 셀을 채 웁니다.

이제 복사 A2 셀 붙여 넣기 (또는 셀 시작하는 A2 교체)를 Master 시트의 데이터 테이블에서 VLOOKUP을 필요로 마지막 셀에 열을 아래 공식을 끕니다 수 있습니다. 모든 행 X에 대해 해당 조회 값에 대한 조회 반환 데이터를 업데이트합니다.

수식을 복사 한 다음 끌어서 200 장마다 전체 B 열을 채워야합니다. 약간 지루합니다. 대안은 통합 문서의 각 시트 위로 반복되는 매크로를 작성하고 해당 열을 마스터 시트에서 조회 한 결과로 채 웁니다. 룩업 값이 약간 열 X 및 반환 값에있을 때

VLOOKUP 작품 데이터,

데이터 조회 값의 왼쪽에 반환되는 경우 X.

의 오른쪽에, 약간 더 복잡한 MATCHINDEX의 조합을 사용해야합니다.

다른 통합 문서의 데이터를 조회하려면 한 장에 모든 데이터 변경에 대한 생각, 두 통합 문서 간의 링크를 만들 this article explains how to do so.

+0

주셔서 감사합니다. 어떤 이유로 위치 번호가 변경되기 전에 다음 위치를 찾을 때까지 모든 위치에 동일한 위치를 복사합니다. 명확하게하려면 .. 내 마스터 시트에는 A 열의 부품 번호와 B 열의 위치가 있습니다. 모든 시트의 A 열에 부품 번호가 있습니다. – Noob2Java

+0

이 문제점을 충분히 이해하지 못했습니다. "위치 번호가 변경되기 전에 다음 위치를 찾을 때까지 모든 위치에 동일한 위치를 복사합니다"라고 말하면 열에 갭이 있음을 의미합니까? 200 개의 시트에 대한 데이터가 있으며 마지막으로 찾은 조회 값을 빈 조회 값을 가진 셀? – sparkplug

+0

네, 질문에 따라 정확히 무엇을하고있는 것처럼 보입니다. – Noob2Java

0

가 필요합니다. 이 집에서 만든 기능을 시도 할 수 있습니다 :

Function AllSheetVLookup(ByVal lookup_value, ByVal search_col As Long, ByVal return_col As Long, Optional book_rng As Range) 
    Dim ws As Worksheet, r As Long 
    On Error Resume Next 
    For Each ws In IIf(book_rng Is Nothing, Application.Caller, book_rng).Worksheet.Parent.Worksheets 
     r = Application.WorksheetFunction.Match(lookup_value, ws.Columns(search_col), 0) 
     If r Then AllSheetVLookup = ws.Cells(r, return_col): Exit Function 
    Next 
    AllSheetVLookup = CVErr(2042) 'Not found, #N/A! returned 
End Function 

lookup_value - 값이 VLOOKUP에서이 검색하는 단계; search_col - 값을 검색 할 곳의 워크 시트에있는 열 번호 return_col - 일치 항목의 값을 반환 할 열 번호는 book_rng - 선택 사항입니다. 다른 책을 검색하려면 다른 책에 모으십시오. 생략 된 경우 기능이 호출되는 책이 사용됩니다.

예 :

=AllSheetVLookup("part_number", 1, 2) 

현재 책의 모든 워크 시트에서 열 A (1)의 값 "PART_NUMBER"를 검색 및 열 B (2)의 값을 반환합니다.

+0

thanks @ LS_dev 모든 데이터를 한 시트에 넣을 수없는 이유는 작업에 개별 시트를 사용하고 있기 때문입니다. 따라서 각 부분에는 옆에 위치가 있어야합니다. 이 함수를 어떻게 사용하는지 잘 모르겠습니다. – Noob2Java

+0

서식 문제 일 수 있습니다. @sparkplug 발견했는데 작동하는 것 같습니다. 이제 자동화를 사용하여 모든 시트의 B 열에이 수식을 적용하는 방법을 파악할 수 있다면 설정 될 것입니다. = IFERROR (VLOOKUP ($ A1 & "", MASTER! $ A $ 1 : $ B $ 7,2, FALSE), "") – Noob2Java

+0

@ Noob2Java 당신의 한계는 무엇인지 모르겠지만 정상화를 위해서, 모든 데이터는 작업 식별을위한 추가 열과 함께 한 시트에 들어 있습니다. –