- ベストアンサー
エクセルVBAのFINDでシート1のコード3に基づいてシート2から名称を取得する方法は?
- エクセルVBAのFIND関数を使用して、シート1のコード3に基づいてシート2から名称を取得する方法を教えてください。
- シート1のD列に、シート1のコード3をもとにシート2から名称を取得したいです。
- シート1のコード1は重複キーで、一レコードずつ読んで行き、各レコード毎にシート2を読みたいです。どのようなプログラムを書けばよいですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考に 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
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
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 こちらの方が簡単だと思います 参考まで
お礼
こんなやり方があるんですね。本当にありがとうございました。
お礼
FINDNEXTを使わないんですね。 とっても参考になりました。ありがとうございました。