我最近為同事編寫了一個宏,將 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