Вот некоторый тестовый код, чтобы показать, почему я предложил запустить вашу VLOOKUP для диапазона на рабочем листе, а не для массива (что вы получили, не используя Set Table = ...
)
Формулы рабочих листов, такие как vlookup, оптимизированы для рабочих таблиц, а не для массивов.
Поиск по листу примерно в 130 раз быстрее, чем поиск по массиву.
Sub Tester()
Const NUMR As Long = 100000
Dim r As Long, arr, t, m, rng
'Fill some dummy data if not already there
If Sheet1.Range("A1") = "" Then
For r = 1 To NUMR
Sheet1.Cells(r, 1).Resize(1, 4).Value = _
Array(CLng(Rnd * NUMR), "A", "B", r)
Next r
End If
Set rng = Sheet1.Range("A1").CurrentRegion
arr = rng.Value
'Vlookup against array
t = Timer
For r = 1 To 100
m = Application.VLookup(r, arr, 4, False)
Next r
Debug.Print Timer - t '>> 10.28
'Vlookup against worksheet Range
t = Timer
For r = 1 To 100
m = Application.VLookup(r, rng, 4, False)
Next r
Debug.Print Timer - t '>> 0.078
End Sub