Encontrando a função volátil na minha planilha do Excel

1

Eu tenho uma planilha do Excel bastante grande que acompanha a nossa competição de golfe. Para acelerar a folha (para uso no meu laptop antigo), estou tentando limitar o número de cálculos automáticos. Por exemplo. a pontuação total é calculada apenas se você inserir o último furo.

No entanto, minha janela imediata mostra que há muitos cálculos feitos após cada entrada. Parece haver uma função volátil em algum lugar. Eu pesquisei e substituí todas as funções conhecidas por serem voláteis (eu costumava usar INDIRECT e OFFSET). Eu verifiquei todos os meus intervalos nomeados para OFFSET (e removi-o). Eu até substituí todas as funções ROW e COLUMN, mesmo que o MS afirme que elas não são voláteis.

Ainda o Excel recalcula toda a planilha após cada entrada e não consigo encontrar a origem.

Eu uso o Excel 2016 (versão holandesa) no Windows 7. Eu uso um par de UDFs (que me dão feedback sobre os cálculos em andamento) para cálculos simples. Todos os dados para as UDFs são passados como parâmetros.

Existe alguma maneira de rastrear a fonte de cálculos voláteis em uma folha?

Minha planilha pode ser encontrada no link Está cheio de escore de teste até a folha '25 -6 '. Ao inserir qualquer pontuação nessa folha, toda a planilha é recalculada.

Eu isolei o arquivo calcChain.xml, que deve conter a cadeia de cálculo. Mas não consigo ver onde meu problema começa. Qualquer ajuda é muito apreciada.

    
por Joost 09.03.2016 / 11:11

2 respostas

1

Após algumas pesquisas, concluí que não eram as minhas UDFs que eram voláteis. Acabou sendo uma referência na forma:

INDEX([named range],[row],[col])

Se eu substituir essa referência por uma direta ([folha]! [col] [linha]) os cálculos serão interrompidos. Se é a função INDEX ou o intervalo nomeado ou a combinação dos dois, eu não sei. Eu uso um monte de intervalos nomeados e um monte de referências INDEX para os intervalos nomeados. Eu não posso substituir todos eles para descobrir qual é o problema. Btw, o intervalo nomeado é um intervalo fixo. Offset () não é usado em nenhuma parte da minha planilha.

    
por 11.03.2016 / 14:18
0

Expandindo meu comentário, você está absolutamente certo sobre as funções voláteis. Mas essas funções voláteis são suas próprias UDFs - o Excel não pode saber se elas são voláteis ou não e, portanto, deve tratá-las como voláteis, recalculando-as sempre que você fizer alguma alteração na pasta de trabalho. E como o VBA é lento em relação às funções da planilha, isso realmente atrasa seu cálculo.

Tente substituir suas UDFs por funções da planilha, se possível. Você verá uma grande melhoria no desempenho.

    
por 10.03.2016 / 14:02