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

相關內容