• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAのFINDの質問です。 )

エクセルVBAのFINDでシート1のコード3に基づいてシート2から名称を取得する方法は?

このQ&Aのポイント
  • エクセルVBAのFIND関数を使用して、シート1のコード3に基づいてシート2から名称を取得する方法を教えてください。
  • シート1のD列に、シート1のコード3をもとにシート2から名称を取得したいです。
  • シート1のコード1は重複キーで、一レコードずつ読んで行き、各レコード毎にシート2を読みたいです。どのようなプログラムを書けばよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Dim シート1 As Worksheet Dim シート2 As Worksheet Dim mykey As Integer Dim obj As Range, c As Range Set シート1 = ThisWorkbook.Worksheets("シート1") Set シート2 = ThisWorkbook.Worksheets("シート2") mykey = "4" With シート1   For Each c In .Range("A2", .Cells(Rows.Count, "A").End(xlUp))     If c.Value = mykey Then       Set obj = シート2.Columns(1).Find(c.Offset(, 2), _         LookIn:=xlValues, _         lookat:=xlWhole, _         SearchOrder:=xlByColumns)       If Not obj Is Nothing Then         c.Offset(, 3).Value = obj.Offset(, 1).Value       Else         c.Offset(, 3).Value = "該当なし"       End If     End If   Next End With

kimillica
質問者

お礼

FINDNEXTを使わないんですね。 とっても参考になりました。ありがとうございました。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

FINDの勉強をしているなら、無視してください FINDを使用しない例です Sub test() Dim シート1 As Worksheet Dim シート2 As Worksheet Dim i As Long Dim j As Long Set シート1 = Worksheets("シート1") Set シート2 = Worksheets("シート2") For i = 2 To シート1.Cells(Rows.Count, 3).End(xlUp).Row For j = 2 To シート2.Cells(Rows.Count, 1).End(xlUp).Row If シート1.Cells(i, 3).Value = シート2.Cells(j, 1).Value Then シート1.Cells(i, 4).Value = シート2.Cells(j, 2).Value Exit For End If Next j If j > シート2.Cells(Rows.Count, 1).End(xlUp).Row Then MsgBox "名称取得できませんでした" Next i End Sub こちらの方が簡単だと思います 参考まで

kimillica
質問者

お礼

こんなやり方があるんですね。本当にありがとうございました。