• 締切済み

VLOOKUPで複数枚シートを検索する方法

色々調べたのですが、思うような答えが見つからなかったので質問させてください。 VLOOKUPを使用して複数枚シートにデータがある場合の値の検索がしたいのですが、 VBAを使用しなければ出来ないようで途方にくれています。 初心者で申し訳ないですが、どなたか教えてください。 よろしくお願いします。 【内容】 一覧表のシートのA&B列のコードと一致するコードを 4月・5月~3月シートのF列から検索、G・J列の値を 一覧表のH・D列に反映させる。 【データ用シート】4月・・・同じフォーマットで12か月分のシートあり    A~E      F            G      H~I       J               1         コード+枝番       日付            金額   2          111101         10/1            1.000  3          111102         9/3              300 4           111103         11/20            3.000 【集計用シート】一覧表     A          B            H              D    1  コード      コード(枝番)       日付            金額    2  1111         01           10/1            1.000 3  1111         03           11/20            3.000 3  1111         05                      ※コードのは重複なし ※該当のコードがなければ空欄

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! >VLOOKUPを使用して複数枚シートにデータがある場合の値の検索がしたいのですが VLOOKUP関数を使用するというコトは同じデータは複数存在しない!というコトですよね? 質問文通りとなると↓の画像のような配置になりますが、 これで間違いないのでしょうか? (1)集計用」SheetのB列は単に数値のみ入力 → セルの表示形式をユーザー定義から2桁表示にしている。 (2)各SheetのF列は6桁数値である。 という前提です。 尚、「集計用」SheetのH列の表示形式は「日付」にしておいてください。 VBAでの一例です。 Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, c As Range, wS As Worksheet With Worksheets("集計用") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Worksheets.Count If Worksheets(k).Name <> .Name Then Set wS = Worksheets(k) Set c = wS.Range("F:F").Find(what:=.Cells(i, "A") * 100 + .Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then .Cells(i, "D") = wS.Cells(c.Row, "J") .Cells(i, "H") = wS.Cells(c.Row, "G") Exit For End If End If Next k Next i End With End Sub 'この行まで ※ 流れとしては (1)すべてのSheetをループさせ、Sheet名が「集計表」以外のF列に 「集計用」SheetのA列数値×100 + B列数値 ⇒ 6桁数値 となる それと一致するデータがあれば「集計用」SheetのH・D列に表示させ、ループから抜ける。 という感じです。m(_ _)m

すると、全ての回答が全文表示されます。
  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

> VBAを使用しなければ出来ないようで途方にくれています。 「VBAを使用しなければ出来ない」のだから マクロでやればいいと思います。 実務に初心者も何もありません。必要なら勉強しないと。 データを1ヶ所に集めるマクロを作ってそこから数式で処理するか 全てをマクロで処理するか。そのどちらかだと思います。他の手段がないとは いいませんが 手間がかかるだけで現実的ではないように思います。 ひとまず一ヶ所に集めるマクロに挑戦してみたらどうですか? ただ最低限 VBAについての基礎の勉強が必要です。分からないところだけ勉強 しようと思っていると かえって遠回りになると思います。

すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.1

こういう時は原点に戻って考える。 Vlookupの参照先は1シートしか不可能。なら、12列に渡って参照式を並べ ヒットした分だけ書き出せばいいんじゃないかと。 =vlookup(A1&B1,4月の範囲,2,false) =vlookup(A1&B1,5月の範囲,2,false) : : =vlookup(A1&B1,3月の範囲、2,false) こうすれば、A1&B1のコード&枝番がどれかヒットするはず。 あとは =if(isna(4月の結果),"",4月の結果)&if(isna(5月の結果),"",5月の結果)・・・ と並べればいいだけなんじゃ?

すると、全ての回答が全文表示されます。

関連するQ&A