- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで別ブックを複数列検索し、隣のセルの値を取得)
VBAで複数列検索し、隣のセルの値を取得する方法
このQ&Aのポイント
- VBAを使用して、book2(master)のセルA1、2、3・・・・の値でbook1(data)の任意の複数列(3列目、8列目など)を検索し、検索結果の右側のセルの値(4列目、9列目など)をbook2(master)の検索元セルの右側に書き込みたいです。しかし、実行すると「実行時エラー1004アプリケーションまたはオブジェクトの定義エラー」と表示されます。
- 回避方法としては、まずbook1とbook2を開き、それぞれのデータシートを設定します。次に、指定した列の範囲内でbook2のセルの値を検索し、該当するセルの右側の値を書き込みます。しかし、現在のコードではエラーが発生しています。
- 複数列の検索方法としては、Findメソッドを使用して検索を行い、該当するセルの値を取得します。具体的には、指定した列の範囲内でbook2のセルの値をFindメソッドで検索し、該当するセルをrngオブジェクトに格納します。その後、rngオブジェクトを使用して該当するセルの右側のセルの値を取得します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
検索したいときに、検索したいブック(Book1)にフォーカスが無いからですかね。 Sub kensaku() Dim book1 As Workbook Dim book2 As Workbook Dim sheet1 As Worksheet Dim sheet2 As Worksheet Dim rng As Range Dim r As Long Set book1 = Workbooks.Open("D:\Book1.xls") Set book2 = Workbooks.Open("D:\Book2.xls") Set sheet1 = book1.Sheets("data") Set sheet2 = book2.Sheets("master") sheet1.Activate '←追加 r = 2 Do While sheet2.Range("A" & r).Value <> "" Set rng = sheet1.Range(Columns(3), Columns(8)).Find(sheet2.Range("A" & r).Value, LookAt:=xlWhole) If Not rng Is Nothing Then sheet2.Range("B" & r).Value = rng.Offset(0, 1).Value End If r = r + 1 Loop End Sub で走らせてみるとどうでしょう?
お礼
tsubuyuki様 できました! 本当に感謝です! この度はご回答頂き、ありがとうございました!