|
▼ののか さん:
こんばんは
いくつか、方法があるかともいますが、効率的には「中くらい」のコードです。
シート上のデータの数(行数)は、動的に取得することもできますが、とりあえず
ご提示の領域に固定してあります。
Sub Sample()
Dim dic As Object
Dim c As Range
Dim shB As Worksheet
Application.ScreenUpdating = False
Set dic = CreateObject("Scripting.Dictionary")
Set shB = Workbooks("B.xls").Worksheets("B")
With shB
For Each c In .Range("L2:L303")
dic(c.Value) = c.Row
Next
End With
With Workbooks("A.xls").Worksheets("A")
For Each c In .Range("B2:B3131")
With c.Offset(0, 1).Resize(, 2)
.ClearContents
If dic.exists(c.Value) Then
.Value = shB.Cells(dic(c.Value), "Q").Resize(, 2).Value
End If
End With
Next
End With
Set dic = Nothing
Set shB = Nothing
Application.ScreenUpdating = True
End Sub
|
|