arrays - 循环范围与循环数组之间的性能差异

标签 arrays excel performance vba loops

循环遍历范围与将相同范围分配给数组并循环数组时,性能(速度)会有所不同吗?

最佳答案

遍历数组比查看范围要快得多。

请参阅下面的测试:

Option Explicit

Const strRANGE_ADDRESS As String = "A1:A100000"

Sub LoopRangeAddOne()

    Dim r As Range
    Dim lStart As Double
    Dim lEnd As Double

    lStart = Timer

    For Each r In Range(strRANGE_ADDRESS)
        r.Value = r.Value + 1
    Next r

    lEnd = Timer

    Debug.Print "Duration = " & (lEnd - lStart) & " seconds"

End Sub

Sub LoopArrayAddOne()

    Dim varArray As Variant
    Dim var As Variant
    Dim lStart As Double
    Dim lEnd As Double

    lStart = Timer

    varArray = Range(strRANGE_ADDRESS).Value
    For Each var In varArray
        var = var + 1
    Next var
    Range(strRANGE_ADDRESS).Value = varArray

    lEnd = Timer

    Debug.Print "Duration = " & (lEnd - lStart) & " seconds"

End Sub

结果:

LoopRangeAddOne 持续时间 = 2.2734375 秒

LoopArrayAddOne 持续时间 = 0.08203125 秒

这使得通过数组循环比通过循环快 96.39%。

希望这可以帮助 :)

关于arrays - 循环范围与循环数组之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302962/

相关文章:

arrays - 包含所有元素而不使用数组的最短子数组?

javascript - TypeError : obj[key]. 包括不是一个函数:在过滤器函数中

python - Openpyxl ['MergedCell'对象属性 'hyperlink'是只读]问题

mysql - 确定 n 维中点之间的距离

Android webview 性能,我错过了什么?

c++ - 如何创建具有可变元素的 C++ 数组?

c - C中数组的递归函数

excel - 我不明白 XlSaveAsAccessMode 是什么,有人可以解释一下吗?

excel - XSL 将 XML 转换为 Excel

php - 如何保持与数据库的连接打开