質問: vba 別ブックから該当データを検索し、複数の数値を固定の列に転記 一覧表というbookがあります No タイトル 店番 種類 コード1 コード2 コード3 1 aaaaaaa (空欄) aa (空欄) (空欄) (空欄) 2 bbbbbbb 〃 bb 〃 〃 〃 3 ・ 4 ・ 5 ・ この様な表になっています 別の集約表というbookに タイトル 店番 コード2 コード3 コード1 cccccccc 25 5.26 3.33 4.44 bbbbbbb - - - - sssssssss 45 8.45 6.55 8.88 aaaaaaaa 88 7.65 8.15 3.77 mmmmm タイトルは同じなのですが、順番がバラバラになっています 集約表の店番、コード123の4つを一覧表に転記したいのですが・・・ 20000件以上のデータがある為、マクロを使用して自動転記を行いたいのです マクロの登録は集約表か別の新しいbookに登録したいです。 初心者のため細かいマクロの記述が出来ず申し訳ありませんが 出来れば詳しく教えて頂けないでしょうか よろしくお願いいたします。
回答: こんばんは! ↓の画像のような配置で 元データは「集約表」bookの「sheet1」にあるとし、「一覧表」bookのsheet1に表示させるとします。 >20000件以上のデータがある為・・・ とは「一覧表」bookの方になるのでしょうか? そうであればループさせるようにしていますので、結構時間がかかると思います。 一例です。「一覧表」bookの標準モジュールにしてください。 尚、「集約表」bookが開いていない場合は開くところからやっています。 sub sample1() dim i as long, c as range dim mypath as string, fn as string dim wb as workbook, ws as worksheet mypath = "保存場所のパス" & "\" fn = "集約表.xlsx" application.screenupdating = false '▼集約表bookが開いていない場合は開く// if workbooks.count = 1 then workbooks.open mypath & fn end if set wb = workbooks(fn) set ws = wb.worksheets("sheet1") with thisworkbook.worksheets("sheet1") for i = 2 to .cells(rows.count, "b").end(xlup).row set c = ws.range("a:a").find(what:=.cells(i, "b"), lookin:=xlvalues, lookat:=xlwhole) if not c is nothing then .cells(i, "c") = ws.cells(c.row, "b") .cells(i, "e") = ws.cells(c.row, "e") .cells(i, "f") = ws.cells(c.row, "c") .cells(i, "g") = ws.cells(i, "d") end if next i application.screenupdating = true .activate end with msgbox "完了" end sub ※ コード内の「保存場所のパス」の部分は 実際のパスにしてください。 保存場所のファイル上で右クリック → プロパティ で確認してください。m(_ _)m