提高VBA阵列读取性能

时间:2017-06-11 00:29:03

标签: arrays vba performance

1.45亿个数组读取需要6秒。怎么能更快?

Dim X As Integer

X = 0
For Y = 1 To 17000
    For Yn = Y To 17000
        d = Ary(Yn, X)
    Next
Next

Ary(Yn,X)是变体/日期 Ary大小约为17000 x 7

没有数组读取的循环是1.5秒。数组读取增加6.5秒。

1 个答案:

答案 0 :(得分:4)

您的代码不完整或无意义。你读取数组的值为144,508,500万次,但是你丢弃了144,508,499次的结果。

如果你只关心最后的结果,我会为你优化:

Dim X As Integer
d = Ary(17000, X)

告诉我们您真正想做的事情,并提供更好的答案。

您可以做一些一般事情:

不要使用Variant / Date数组 - 变量使用更多内存,如果从Excel中读取它们,则保留区域的日期格式会有一些开销。使用Date数组会更好,而且我怀疑,使用双打阵列会更好。

假设您打算进行某种日期比较,那么您将多次重读多行。查看使用Dictionary对象,您可以显着减少读取次数。