Galera, me deparei com um problema de consumo de memória pelo Excel, e queria compartilhar o problema e a solução...
Via código estou gerando uma pasta de trabalho com mais de 90 planilhas, e em cerca de 25 há alguns SOMASE() olhando para uma ou mais planilhas...
Até aí tudo bem, mas quando abri o Gerenciador de Tarefas, a cada inserção de fórmulas numa coluna (intervalo de 200 a 300 linhas no máximo), o consumo de memória subia em cerca de 10MB. Mas pensa só, 25 planilhas, vezes 4 colunas de fórmula, vezes 10 MB, o consumo estava beirando 900MB...
Entrei em ação para descobrir o motivo, e tentar reduzir este consumo absurdo.
Já sabíamos que referenciar colunas inteiras em fórmulas poderia prejudicar o consumo e desempenho do Excel, hoje eu conseguí quantificar isso.
Descobri que há uma diferença gigantesca no consumo de memória quando fazemos a referencia a uma coluna inteira ou somente ao intervalo específico.
Vamos lá:
Este exemplo consome muito da memória disponível para o Excel, portanto, evitem ao máximo usar esse tipo de referência.
=(SOMASE('Dados 1'!$D:$D;$D8;'Dados 1'!$F:$F)*'Dados 1'!$C$5+SOMASE('Dados 2'!$D:$D;$D8;'Dados 2'!$F:$F)*'Dados 2'!$C$5)/$C$5
Já temos o costume de usar ranges dinâmicos, prefiram isso SEMPRE. Mesmo que vocês fixem o número da ultima linha em 100, sei lá. Nunca referenciem coluna inteira. Fica sssim:
=(SOMASE('Dados 1'!$D$8:$D$204;$D8;'Dados 1'!$F$8:$F$204)*'Dados 1'!$C$5+SOMASE('Dados 2'!$D$8:$D$204;$D8;'Dados 2'!$F$8:$F$204)*'Dados 2'!$C$5)/$C$5
Eu confesso que imaginava que o Excel respeitaria o UsedRange e, mesmo referenciando coluna inteira, se eu arrumasse o usedrange da planilha isso não afetaria nem desempenho nem memória. Eu claramente estava errado.
Para testar, abrir estes anexos em instâncias diferentes, e para cada uma, ir no gerenciador de tarefas e verificar o consumo de memória.
Este é um exemplo simples, mas já mostra o ônus de referências mal feitas quando editamos fórmulas.
O tamanho dos arquivos é o mesmo, mas o consumo de memória é bem maior.
Fica a dica.
*(arquivos Indisponiveis)
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 17/06/2013 12:32 pm