저는 최근 직장 동료를 위한 매크로를 작성하여 Excel 스프레드시트의 데이터를 약 75000x58 크기의 2D 배열로 복사한 다음 각 행을 실행하고 관련 데이터를 추출합니다.
매크로는 내 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