Não use fórmulas de matriz, use fórmulas regulares.
Por exemplo, digamos que você tenha uma fórmula que adicione a coluna B se o valor na coluna A for maior que 10. Não crie uma fórmula de matriz com uma condicional para fazer isso. Em vez disso, crie uma nova coluna C com a fórmula:
=If( $A > 10, $B, 0 )
Portanto, a terceira coluna contém o valor de B, se a condição for atendida, ou 0, se não for atendida. Agora, basta somar a coluna C. Esse método geralmente é muito mais rápido que uma fórmula de matriz. É chamado de "coluna auxiliar".
Se ainda for lento para calcular, use macros ou VBA para calcular os valores; Dessa forma, você só precisa computá-los uma vez, não recatá-los se as coisas não mudarem. Portanto, no exemplo acima, em vez de usar a fórmula condicional, podemos usar uma macro (ou código VBA) para calcular a fórmula If e colocar o resultado na célula. Em seguida, execute a macro sempre que precisar calcular a tabela e gerar valores. Sem condicionais (instruções If) na própria planilha, ele será calculado muito mais rápido.
Como fazer tudo na memória
Se você quiser se livrar da planilha completamente, você pode fazer tudo na memória usando variáveis estáticas em um módulo de código VBA:
Dim MyArray(1000, 2000) As Double
Sub computeMyArray()
... compute all the values of MyArray
End sub
Function GetValueFromMyArray( Dim x as Integer, Dim y as Integer )
GetValueFromMyArray = MyArray( x, y )
End Function
Você pode usar essa função em qualquer célula de sua pasta de trabalho para obter valores fora da matriz que você criou, que é a memória. Por exemplo, uma célula na pasta de trabalho pode ter a fórmula:
=GetValueFromMyArray( 5, 6 )
Isso recuperaria a quinta linha, a sexta da matriz que está na memória.