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 INDIRECT
chamada com os valores $B$6:$B$17
resultará 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 | Calculations
você 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.