2017-04-27 4 views
-1

A欄に部品番号が、B欄にB欄がある「マスター」シートがあります。どの部品にもすべてのシートにVLOOKUPを適用するにはどのようにすればよいですか?すべてのシートの番号はB欄に自分の位置が入りますか?手動で行うのは永遠にかかります。ありがとうすべてのシートにVLOOKUP

+1

すべての200枚のシートをループし、すべてのシートのB列に 'vlookup'式を挿入するマクロを作成します。 –

+0

シートには名前が付けられ、順序付けされ、並べ替えられた部品番号のシートがありますか? – Fritz

+0

すべてのシートにはジョブ名(Job-123-top、Job-123-btm)などがあり、数値順にソートされます。 – Noob2Java

答えて

0

Masterシートからデータを検索する方法の1つは、参照値を含む開始セルがA2であると仮定します。これはまた、すべてのシートが同じワークブック内にあることを前提としています

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

各引数は左から右に何をするかの説明:

  • A2から200シートの1つのルックアップ値を含むセル。 (これはルックアップ値を含む任意のセルとすることができる)。
  • Masterは、検索するデータを含むシートの名前です。
  • $A$2は、Masterシートでルックアップするテーブルデータの左上のセルです。ルックアップテーブルの左上のセルを修正する必要があるため、$ signを使用します。
  • $B$11は、Masterシートでルックアップするテーブルの右下セルです。ルックアップテーブルの右下セルを固定する必要があるため、$ 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列全体を塗りつぶす必要があります。ちょっと面倒です。代わりに、ブック内の各シートにループするマクロを記述し、対応する列にマスターシートからの参照の結果を取り込みます。

VLOOKUP作品ルックアップ値は、いくつかの列Xと返される値であり、データ、データが返される場合はX.

の右にあることは、ルックアップ値の左にあります少し複雑なMATCHINDEXの組み合わせを使用する必要があります。別のワークブック内のデータを検索するのに

、あなたはthis article explains how to do so.

+0

詳細な説明をお寄せいただきありがとうございます。何らかの理由で、ロケーション番号が変更される前に次のロケーションを見つけるまで、すべてのロケーションで同じロケーションをコピーします。明確にするために、私のマスターシートは、列Aの部品番号と列Bの位置を持っています。すべてのシートには列Aの部品番号があります。 – Noob2Java

+0

私はこの問題を十分に理解していません。 「場所番号が変更される前に次の場所が見つかるまで、同じ場所がすべてコピーされます」と言うと、200枚分のデータが欠落していて、最後に見つかった参照値が空の参照値を持つセル? – sparkplug

+0

はい、それはあなたの質問に基づいて何をしているかのように見えます。 – Noob2Java

0

1枚の用紙にすべてのデータを変更することを考えてみて、2つのワークブック間のリンクを作成する必要があります。あなたはこの家に作られた機能を試すことがあります。

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(第一)の値 "PART_NUMBER" を検索し、列B(第二)の値を返します。

+0

ありがとう@LS_dev私はすべてのデータを1つのシートに入れることができない理由は、ジョブのために個々のシートを使用しているからです。だから、各部品の隣に場所が必要です。私はこの機能をどのように使うべきかについてはあまりよく分かりません。 – Noob2Java

+0

フォーマット上の問題である可能性があります@sparkplugこれが見つかりました。今、自動化されたすべてのシートのB列にこの数式を適用する方法を理解できたら、私は設定されます。 = IFERROR(VLOOKUP($ A1& ""、MASTER!$ A $ 1:$ B $ 7,2、FALSE)、 "") – Noob2Java

+0

@ Noob2Javaあなたの限界はわかりませんが、正規化のためには、すべてのデータを1枚のシートにまとめ、ジョブ識別のための追加の列を追加します。 –

関連する問題