excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA字典的妙用

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查找效率更高

欢迎关注、收藏!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接