Tengo una hoja de Excel con valores (esta hoja se genera mediante un script Perl personalizado, pero no creo que ahí esté el problema). En él tengo una fórmula:
=sum(indirect(concatenate(address(6,column()),":",address(17,column()))))
El propósito de esta fórmula es darme el SUM()
número de celdas en la columna actual, entre las filas 6 y 17. EnHoja de cálculo numérica, tan pronto como abro el archivo, esto funciona. Pero en Excel (ambos de 2003y2007), al abrir el archivo se obtienen #VALUE!
errores en los campos con esta fórmula, indicando que la INDIRECT
llamada con los valores $B$6:$B$17
dará como resultado un error.
Aquí está el problema del asunto. Si edito el campo (a través de F2
) y hagoNocambia, y presiona enter, los valores se actualizan. Además, parece que si guardo el archivo como .xlsx (formato Excel 2007), los valores se actualizan al abrirlo. Desafortunadamente, no estoy seguro de que crear un xlsx
sea posible con los módulos que estoy usando, y muchos de nuestros clientes probablemente no podrían usarlo de todos modos.
¿Alguna sugerencia? Editar más de 200 archivos cada mes para cada cliente no será factible, así que si me falta algo, hágamelo saber.
Respuesta1
Si inserta una función Suma básica, ¿funciona? Es decir, ¿se puede atribuir el problema a un componente de la combinación indirecta/dirección?
¿Has intentado usar OFFSET para crear el rango que se va a sumar? Por ejemplo:
=SUM(OFFSET(B6,0,0,12,1))
Respuesta2
Puede que te estés agarrando a un clavo ardiendo, pero puedes probar la referencia de estilo R1C1
=SUM(INDIRECT("R["&7-ROW()&"]C:R["&17-ROW()&"]C",FALSE))
O si las fórmulas siempre están en la fila 19, establezca el estilo de referencia en R1C1
Application.ReferenceStyle = xlR1C1
Luego puedes insertar la fórmula como
=SUM(R[-13]C:R[-2]C)
Actualizar:
Puedes evitar la necesidad de configurar ReferenceStyle usando
<YourCellReference>.FormulaR1C1 = "=SUM(R[-13]C:R[-2]C)"
Respuesta3
Tal vez podrías forzar un nuevo cálculo de toda la hoja de cálculo con esto:
http://msdn.microsoft.com/en-us/library/bb687891.aspx
Cambiar el nombre de una macro y luego cambiar nuevamente el nombre de la hoja de cálculo debería funcionar bien. ¿Quizás podrías ejecutarlo al final del guión perlado? Realmente no sé mucho sobre Pearl, lo siento.
O use la tecla de acceso rápido CTRL+ALT+F9 y si funciona use VBA con esta función:Aplicación.CalcularCompleto
Respuesta4
En Excel Tools | Calculations
puede configurar el modo de cálculo. Si se establece en "Automático", Excel debería actualizar los resultados de la fórmula de todos los campos automáticamente, también al abrir el archivo.
La configuración de cálculo también se puede establecer para hojas de trabajo individuales, por lo que tal vez sea posible que el script Perl establezca el modo de actualización manual.