2010-11-16 10 views
7

Ho un foglio di calcolo che ha un piccolo numero di input, che guidano un gran numero di calcoli intermedi, che a loro volta guidano un piccolo numero di calcoli costosi che dipendono da molti dei valori intermedi. Alcuni dei calcoli utilizzano UDF che restituiscono sia valori di ritorno singoli sia array, mentre altri sono formule regolari nella cella stessa.c'è un ordine di aggiornamento delle celle Excel documentato?

Sono curioso di sapere se esiste un modello noto per descrivere l'ordine di aggiornamento delle celle in Excel.

Ad esempio, è possibile modificare l'ingresso A1, da cui dipendono i calcoli B1, B2, B3 e il calcolo C1 dipende da B1, B2 e B3 ... verrà aggiornato C1 tre volte separate come valori intermedi ciascuno aggiorna o B1, B2 e B3 si aggiornano per primi, e C1 si aggiorna solo una volta?

+0

Per quello che vale, un semplice test basato sul mio esempio mostra C1 che si aggiorna solo una volta, quando le 3 variabili intermedie "B" dipendono da A1, e C1 dipende da B1, B2 e B3. Sono un po 'riluttante a generalizzare però. – tbischel

+0

A meno che non riusciamo a trovare un documento in cui lo dichiari, preferisco anche non dare per scontato nulla su excel internals –

risposta

5

Non v'è documentazione sugli algoritmi Excel utilizza per trovare le sequenze di calcolo qui
http://www.decisionmodels.com/calcsecretsc.htm
http://msdn.microsoft.com/en-us/library/aa140058%28office.10%29.aspx

Ma la linea di fondo è che, poiché la catena di calcolo è determinata in modo dinamico e parte dai precedenti cellule sequenza catena di calcolo può essere calcolato più di una volta in una occasione e non in un successivo ricalcolo.
Se si conosce la struttura delle dipendenze di calcolo, è possibile controllare le cose in una certa misura utilizzando Range.Calculate e Sheet.calculate.

4

Excel ora utilizza Multi-Threaded Calculation che rende l'intera cosa difficile da prevedere, tranne i bambini diretti nell'albero delle dipendenze. Vedi il link.

HTH!

1

Per quanto riguarda la vostra più specifica domanda "C1 = C1 (B1, B2, B3) e B1 = B1 (A1), B2 = B2 (A1), B3 = B3 (A1) l'ordine di calcolo saranno

1) A1 2) B1, B2, B3 (in ordine arbitrario) 3) C1

e C1 saranno calcolati una sola volta.

faccio tale affermazione non da alcuna documentazione Excel ma dal mio esperienza con Excel e il mio lavoro su un gestore di oggetti Java per fogli di calcolo (vedere this paper). Da quanto ho osservato, Excel non effettua chiamate inutili s a funzioni in cella.

Se l'albero delle dipendenze di un foglio presenta diverse "foglie" che potrebbero "innescare" il calcolo, non viene determinato dove viene avviato Excel. Se apri un foglio e l'intero foglio viene ricalcolato, l'ordine di calcolo delle celle "indipendenti" è difficile da prevedere. La cache dei valori memorizzati con il foglio può avere un effetto sul ricalcolo. (Quello che ho visto è: il primo tocco di cella excel è l'ultima cella cambiata prima che il foglio sia stato salvato).

Problemi correlati