VBA初心者です。
何卒ご教示をいただきたく、宜しくお願い申し上げます。
B2セルの名前について、別ファイルを参照し、
その別ファイルのB列から合致した名前を検索、
その別ファイルの対応するY列とZ列の値を
C列およびD列に記入するマクロを組みたいと考えています。
なお、別ファイルの対応するY列とZ列の値は複数ありますので、
C列およびD列は複数行記入されることを想定しています。
コードをインターネットで見よう見まねで書いてみたのですが、
対応する値がそもそも記入されないという状況です。
さらに複数列、複数行となると、どこをどう記載してよいものか、手が付けられていません。
※下記ご参考までに現在書いてみたコードを記載いたします。
VBA
1Option Explicit 2 3Sub 検索() 4 5 Dim res As Worksheet 6 Dim z As Long 7 Set res = Worksheets("検索") 8 z = res.Cells(res.Rows.Count, "A").End(xlUp).Row 9 10Debug.Print res.Name, z 11 12 Dim sPath As String, fn As String 13 Dim wb As Workbook 14 Dim ws As Worksheet 15 Dim rng1 As Range, rng2 As Range 16 With Application.FileDialog(msoFileDialogFilePicker) 17 .Show 18 If .SelectedItems.Count = 0 Then Exit Sub 19 sPath = .SelectedItems(1) 20 End With 21 For Each wb In Workbooks 22 If wb.Name = fn Then Exit For 23 Next wb 24 If wb Is Nothing Then 25 Set wb = Workbooks.Open(Filename:=sPath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True) 26 End If 27 Set ws = wb.Worksheets("p_data") 28 Set rng1 = ws.Range("B1:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row) 29 Set rng2 = ws.Range("Y1:Z" & ws.Cells(ws.Rows.Count, "Z").End(xlUp).Row) 30 31Debug.Print wb.Name, ws.Name, rng1.Address, rng2.Address 32 33 Dim i As Long 34 Dim x As String 35 For i = 2 To z 36 '氏名の値を取得 37 x = res.Cells(i, 2).Value 38 '送付先分類の値を表示 39 With Application.WorksheetFunction 40On Error Resume Next 41 res.Cells(i, 3).Value = .Index(rng1, .Match(x, rng2.Value, 0), 1) 42On Error GoTo 0 43 End With 44 45Debug.Print i, x, ws.Name, res.Cells(i, 2).Value 46 47Next 48 49End Sub
分からないことばかりでお恥ずかしい限りですが、
何卒お力添えいただければ幸いです。
宜しくお願い申し上げます。
※追記
質問に目を通していただきまして、誠にありがとうございます。
検索シート、別ファイルのシート、のデータ例
処理後の検索シートの結果、
上記につきまして、画像を添付いたします。
イメージが湧きますでしょうか。
恐れ入りますが、宜しくお願い申し上げます。
●別ファイルのシート(氏名・会社名等は白で塗りつぶしています)
お手数お掛けいたしますが、何卒ご教示の程、宜しくお願い申し上げます。

回答3件
あなたの回答
tips
プレビュー