在Excel VBA中使用VLOOKUP的公式进行查找引用时,会出现计算缓慢、卡顿的现象,有没有其他方式解决?
其实,使用VBA字典就可以解决的,下面就验证一下。
2.生产测试数据,表1原始数据,表2进行查找匹配结果
一、生成测试数据
表1生成1万行测试数据,A列数字,B列随机的字符串
Sub test()
'生产测试数值
For i = 1 To 10000
Set Lib = CreateObject("Scriptlet.Typelib")
Cells(i, 1) = i
Cells(i, 2) = UCase(Mid(Lib.GUID, 2, 36)) '生成UUID
Set Lib = Nothing
Next
End Sub
运行结果如下
表1表2生成10000行随机数
Sub testss()
For i = 1 To 10000
Cells(i, 1) = Int(1 + (8000 - 1 + 1) * Rnd()) '生成1-8000的随机数
Next
End Sub
运行结果如下:
表2二、采用两种不同的方法进行匹配
通过表2中A列的数字从表1中查找对应的字符串,并打印运行时间
方式一:使用VLOOKUP查找返回值

Sub testV()
t = Timer
For i = 1 To 10000
Cells(i, 2) =Application.WorksheetFunction.VLookup(Cells(i, 1), Sheets("sheet1").Range("A:B"), 2, 0)
Next
Debug.Print Timer - t '打印运行时间
End Sub
方式二:使用字典查找值

Sub testD()
t = Timer
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
'创建字典
Set dic = CreateObject("Scripting.Dictionary")
'将值读取到字典
For i = 1 To 10000
dic(s1.Cells(i, 1).Value) = s1.Cells(i, 2).Value
Next
'赋值
For i = 1 To 10000
s2.Cells(i, 2) = dic(s2.Cells(i, 1).Value)
Next
Set dic = Nothing
Debug.Print Timer - t ' 打印运行时间
End Sub
三、 对比结果
在相同的条件下,对两种方式各运行5次,分别打印时间,经过对比发现,使用字典明显比VLOOKUP公式耗时更短

因此,字典比VLOOKUP查找效率更高
欢迎关注、收藏!