2つ目のワークシートは、300k +のエントリを持つ2番目のシート(Sheet2S)でvlookupする必要がある40k +(Sheet1S)のエントリを持つ最初のワークシートです。VBA Vlookup with Scripting Dictionary
私はこのスクリプトを使って、forループを10行に調整した場合に動作するスクリプトdictonaryに基づいてvlookupを実行しました(私は実際のforループをコメント解除しました)。私はすべての行を使用している場合しかし、それは年齢を取る:
Sub aTest()
Dim a As Variant, i As Long
With CreateObject("Scripting.Dictionary")
a = Sheets("Sheet2S").Range("A1").CurrentRegion.Value
For i = 2 To 10
'For i = 2 To UBound(a, 1)
.Item(a(i, 1)) = Application.Index(a, i, 0)
Next
a = Sheets("Sheet1S").Range("A1").CurrentRegion.Value
'For i = 2 To UBound(a, 1)
For i = 2 To 10
If .exists(a(i, 1)) Then
a(i, 2) = .Item(a(i, 1))(2)
'a(i, 4) = .Item(a(i, 2))(3)
Else
a(i, 2) = "#N/A"
End If
Next i
End With
Sheets("Sheet1S").Range("a1").CurrentRegion.Value = a
End Sub
今古いスレッド(How to optimize vlookup for high search count ? (alternatives to VLOOKUP))に係る辞書方法は、ほんの数秒でなければなりません。 Application.Vlookupを使用すると、まったく同じシートが私にとっては長すぎます。 Excel 2016を使用していて、Microsoft Scripting Runtimeを追加しました。私は何か間違っているのですか?
ありがとうございます。
ベスト
これを実現するためのあなたの方法は、私には珍しいそうです。何柱ですか?あなたはどちらのリストにも重複していますか? –
両方のシートには15の列が含まれており、重複がある可能性があります。しかし、ポール・ビカの実装では、それは魅力的なように機能します。 – Uwewewe