2010-11-16 9 views
7

Tengo una hoja de cálculo que tiene una pequeña cantidad de entradas, que manejan una gran cantidad de cálculos intermedios, que a su vez generan un número pequeño de cálculos costosos que dependen de muchos de los valores intermedios. Algunos de los cálculos usan UDF que devuelven valores de retorno únicos y matrices, mientras que otros son fórmulas regulares en la propia celda.¿hay una orden de actualización de celular de Excel documentada?

Tengo curiosidad por saber si hay un modelo conocido para describir el orden de actualización de las celdas en Excel.

Por ejemplo, podría estar cambiando la entrada A1, de lo que dependen los cálculos B1, B2, B3, y el cálculo C1 depende de B1, B2 y B3 ... se actualizará C1 tres veces separadas como valores intermedios cada ¿Se actualizarán primero B1, B2 y B3, y las actualizaciones de C1 solo una vez?

+0

Por lo que vale, una simple prueba basada en mi ejemplo muestra que C1 solo se actualiza una vez, cuando las 3 variables intermedias 'B' dependen de A1, y C1 depende de B1, B2 y B3. Aunque soy un poco reacio a generalizar. – tbischel

+0

A menos que podamos encontrar un documento que lo establezca, también prefiero no asumir nada sobre Excel internals –

Respuesta

5

Existe documentación sobre los algoritmos de Excel utiliza para encontrar las secuencias de cálculo aquí
http://www.decisionmodels.com/calcsecretsc.htm
http://msdn.microsoft.com/en-us/library/aa140058%28office.10%29.aspx

Pero la conclusión es que desde la cadena de cálculo se determina de forma dinámica y comienza a partir de las anteriores células de la secuencia de la cadena de cálculo podrán calcularse más de una vez en una ocasión y no en una recalc subsiguiente.
Si conoce la estructura de sus dependencias de cálculo, puede controlar las cosas hasta cierto punto utilizando Range.Calculate y Sheet.calculate.

4

Excel utiliza ahora Multi-Threaded Calculation que hace que todo sea difícil de predecir, con excepción de aquellas dirigidas niño en el árbol de dependencias. Vea el enlace.

HTH!

1

Con respecto a su pregunta más específica "C1 = C1 (B1, B2, B3) y B1 = B1 (A1), B2 = B2 (A1), B3 = B3 (A1) del orden de cálculo serán

1) A1 2) B1, B2, B3 (en orden arbitrario) 3) C1

y C1 se calcula sólo una vez.

que esa alegación no hacer de cualquier documentación de Excel pero desde mi experiencia con Excel y mi trabajo en un manejador de objetos Java para hojas de cálculo (ver this paper). Por lo que he observado, Excel no hace llamadas innecesarias s a funciones en la celda.

Si el árbol de dependencias de una hoja tiene varias "hojas" que podrían "encender" el cálculo, entonces no se determina dónde se inicia Excel. Si abre una hoja y se vuelve a calcular toda la hoja, el orden de cálculo de las celdas "independientes" es difícil de predecir. La memoria caché de valores almacenados con la hoja puede tener un efecto sobre el recálculo. (Lo que vi es: la primera celda toques de Excel es la última celda modificada antes de que se haya guardado la hoja).

Cuestiones relacionadas