Excel/VBA 数组在 Windows 和 Mac 计算机上的工作方式是否不同?

Excel/VBA 数组在 Windows 和 Mac 计算机上的工作方式是否不同?

我最近为一位同事编写了一个宏,将 Excel 电子表格中的数据复制到一个大约 75000x58 大小的二维数组中,然后遍历每一行并提取相关数据。

该宏在我的 Windows 计算机上运行良好,并在 2 秒内完成。

该宏在我同事的 Mac 上也能运行,但耗时更长,大约 2000 到 4000 秒。

我已经在其他配置比她的更低的 Windows 计算机上尝试过该宏,并且宏在几秒钟内就完成。

为什么 Mac 需要花费 1000 倍以上的时间?

这是宏的主要部分,mechArray 和 activityArray 只是小数组 - 分别有 4 个和 10 个元素,outArray 大约为 120x10x2。

'Transfer Data
For i = 1 To UBound(inArray)
    If inArray(i, 1) >= d1 And inArray(i, 1) <= d2 _
        And UCase(inArray(i, 17)) = site Then

        x = DateDiff("d", d1, inArray(i, 1)) + 1

        y = isIn(mechArray, inArray(i, 48))
        z = isIn(activityArray, inArray(i, 49))

        If y > -1 And z > -1 Then
            outArray(x, z, 1) = outArray(x, z, 1) + inArray(i, 5)
            outArray(x, z, 2) = outArray(x, z, 2) & inArray(i, 8) & "|"   
        End If
    End If
Next i
Erase inArray

这是函数‘isIn’,

Function isIn(arr As Variant, val As Variant) As Single
    Dim i

    For i = LBound(arr) To UBound(arr)
        If arr(i) = val Then
            isIn = i
            Exit Function
        End If
    Next i
    isIn = -1
End Function

相关内容