こんばんは!
わざわざVBAでやるメリットはないように思えますが・・・
Excel2003 というコトなので
Sheet1のB2セルに
=IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,0),"")
という数式を入れB2セルのフィルハンドルでダブルクリック!
これで完了だと思います。
どうしてもVBAでやりたい場合、一例です。
ワークシート関数をそのまま使用するのが一番簡単だと思います。
Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,False),"""")"
.Value = .Value
End With
End With
End Sub
別の方法としては、いかにもVBAらしくやると
Sub Sample2()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(i, "B") = wS.Cells(c.Row, "B")
End If
Next i
End With
End Sub
こんな感じでしょうか。
※ Sample2はループさせていますので、データ量が多い場合は
Sample1の方が速いと思います。m(_ _)m
お礼
早々の回答ありがとうございました。 早速試してみたいと思います。 2つも提案してくださって感謝いたします。