Excel não recalcula valores corretamente

Excel não recalcula valores corretamente

Eu tenho uma planilha do Excel com valores (esta planilha é gerada por um script perl personalizado, mas não acho que seja aí que reside o problema). Nele, tenho uma fórmula:

=sum(indirect(concatenate(address(6,column()),":",address(17,column()))))

O objetivo desta fórmula é fornecer SUM()as células da coluna atual, entre as linhas 6 e 17. EmPlanilha Gnumérica, assim que abro o arquivo, isso funciona. Mas no Excel (ambos de 2003e2007), a abertura do arquivo dá #VALUE!erros nos campos com esta fórmula, informando que a INDIRECTchamada com os valores $B$6:$B$17resultará em erro.

Aqui está o problema. Se eu editar o campo (via F2) e fizernãoalterações e pressione Enter, os valores são atualizados. Além disso, parece que se eu salvar o arquivo como .xlsx (formato Excel 2007), os valores serão atualizados na abertura. Infelizmente, não tenho certeza se criar um xlsxé uma possibilidade com os módulos que estou usando, e muitos de nossos clientes provavelmente não conseguiriam usá-lo de qualquer maneira.

Alguma sugestão? Editar mais de 200 arquivos todos os meses para cada cliente não será viável, então, se houver algo que esteja faltando, por favor me avise.

Responder1

Se você inserir uma função Vanilla Sum, ela funcionará - ou seja, o problema pode ser atribuído a um componente da combinação indireta/endereço?

Você já tentou usar OFFSET para criar o intervalo a ser somado? Por exemplo:

=SUM(OFFSET(B6,0,0,12,1))

Responder2

Pode estar se agarrando a qualquer coisa, mas você pode tentar a referência do estilo R1C1

=SUM(INDIRECT("R["&7-ROW()&"]C:R["&17-ROW()&"]C",FALSE))

Ou se as fórmulas estiverem sempre na linha 19, defina o estilo de referência para R1C1

Application.ReferenceStyle = xlR1C1

Então você pode inserir a fórmula como

=SUM(R[-13]C:R[-2]C)

Atualizar:

você pode evitar a necessidade de definir ReferenceStyle usando

<YourCellReference>.FormulaR1C1 = "=SUM(R[-13]C:R[-2]C)"

Responder3

Talvez você possa forçar um recálculo de toda a planilha com isto:

http://msdn.microsoft.com/en-us/library/bb687891.aspx

Uma renomeação de macro e uma nova renomeação da planilha devem funcionar bem. Talvez você possa executar no final do Pearlscript? Eu realmente não sei muito sobre pérola, desculpe.

Ou use a tecla de atalho CTRL+ALT+F9 e se funcionar use VBA com esta função:Aplicativo.CalculateFull

Responder4

No Excel Tools | Calculationsvocê pode definir o modo de cálculo. Se estiver definido como 'Automático' o Excel deverá atualizar os resultados das fórmulas de todos os campos automaticamente, também ao abrir o arquivo.

A configuração de cálculo também pode ser definida por planilhas individuais, então talvez seja possível que o script Perl defina o modo de atualização manual.

informação relacionada