|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
长期在Excelhomel论坛潜水,受益良多,今日回馈论坛和坛友。
【题目】:VBA中调用Excel工作表函数和直接用VBA代码实现相同功能的速度比较
【缘由】:Excel中有很多函数可供在VBA中调用,同时,如果不怕麻烦,也可以自己编写Vba的代码实现相同功能,两个哪个速度更快呢,让事实说话。
【实例】:选用求一个数组的最大值的命题,简单易懂。
【实现】:因为实际代码执行很快,单次的测试肯定难以测出结果,因此选择重复执行的方式(本例重复10万次)
【代码】:(复制粘贴后可直接在VBA环境中运行)
Sub SpeedTest2() '测试VBA代码和调用Excel函数的速度差异
Dim i As Long, j As Long, Lp As Long '循环变量,循环次数
Dim T As Single, T1 As Single, T2 As Single '时间
Dim R As Double, R1 As Double, R2 As Double '结果
Dim V As Single, V1 As Single, V2 As Single '临时变量
Dim A(1 To 256) As Single
'初始化
Lp = 100000 '设定循环次数,便于修改
For i = 1 To 256
A(i) = i
Next i
A(123) = 456
'测试过程1
T1 = Timer
For i = 1 To Lp '具体测试过程
V1 = A(1)
For j = 2 To 256
If A(j) > V1 Then V1 = A(j)
Next j
Next i
T2 = Timer
R1 = T2 - T1 '结果1
'测试过程2
T1 = Timer
For i = 1 To Lp '具体测试过程
V2 = Application.WorksheetFunction.Max(A)
Next i
T2 = Timer
R2 = T2 - T1 '结果1
'输出结果
If R1 > R2 Then R = R1 / R2 Else R = R2 / R1
MsgBox "直接用VBA语句实现并找出的最大值是:" & V1 & " 运行" & Lp & "次的时间:" & R1 & vbCr & _
"调用Excel的 Max函数找出的最大值是:" & V2 & " 运行" & Lp & "次的时间:" & R2 & vbCr & _
"二者相差:" & R & "倍!" & vbCrLf & "呵呵。"
End Sub
【结果】:
【结论】:用VBA语句直接实现的速度是调用Excel函数速度的将近5倍!
【实际意义】:
1.调用Excel函数简单易懂,可以简化代码,在速度要求不高或数据量不大的情况下,应优先选用;
2.如果数据处理量很大,对速度要求又很高的话,最好还是不要怕麻烦,自己编写代码实现为妙。当然,前提是代码不能太糟糕。
班门弄斧,诸位见笑! |
|