As matrizes Excel / VBA funcionam de maneira diferente em computadores Windows e Mac?

0

Eu escrevi uma macro para um colega de trabalho copia recentemente os dados de uma planilha do Excel para um array 2D com aproximadamente 75000x58, depois passa por cada linha e extrai dados relevantes.

A macro funciona bem no meu computador com Windows e é concluída em menos de dois segundos.

A macro também funciona nos meus colegas de trabalho Mac, mas demora muito mais tempo; entre 2000 e 4000 segundos.

Eu tentei a macro em outros computadores Windows com especificações mais baixas que as dela e a macro é concluída em poucos segundos.

Existe um motivo pelo qual o Mac leva mais de 1000x mais?

Aqui está a parte principal da Macro, mechArray e activityArray são apenas matrizes pequenas - com 4 e 10 elementos cada, o outArray é em torno de 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

E esta é a função '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
    
por Aaron 30.09.2017 / 14:20

0 respostas