|
▼びゅう さん:
>私が作成したマクロだと時間がかかりすぎて10分近くかかります。
ワークシート関数のVLOOKUPだと、2万行あれば 2万回同じ表を走査しないと
いけないですよね?
ためしてませんが、Dictionaryオブジェクトを使って、B Bookの表をメモリに
書き込んでおけば、2万回表をなめることはしなくて済みます。
Option Explicit
Sub dicLookup()
Dim i As Long
Dim v As Variant
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
With Workbooks("B.xls").Worksheets(1)
v = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)). _
Resize(, 2).Value
End With
For i = 1 To UBound(v)
dic(v(i, 1)) = v(i, 2)
Next
With Workbooks("A.xls").Worksheets(1)
With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
v = .Value
For i = 1 To UBound(v)
If dic.Exists(v(i, 1)) Then
v(i, 1) = dic(v(i, 1))
Else
v(i, 1) = Empty
End If
Next
.Offset(, 1).Value = v '結果をB列に書き込む
End With
End With
End Sub
|
|