是否有一个logging的Excel单元格更新命令?

我有一个包含less量input的电子表格,这些input会驱动大量的中间计算,从而导致依赖许多中间值的一些昂贵的计算。 一些计算使用UDFs,它返回单个返回值和数组,而另一些是单元本身的常规公式。

我很好奇,如果有一个已知的模型来描述Excel中单元格的更新顺序。

例如,它可以改变inputA1,计算B1,B2,B3所依赖的,计算C1依赖于B1,B2和B3 …将C1更新三次,每次中间值更新,或将B1,B2和B3先更新,C1只更新一次?

这里有关于Excel用来查找计算顺序的algorithm的文档
http://www.decisionmodels.com/calcsecretsc.htm
http://msdn.microsoft.com/en-us/library/aa140058%28office.10%29.aspx

但是底线是由于计算链是dynamic确定的并且从先前的计算链序列开始,所以一次可以计算多次单元,而不是随后重新计算。
如果您知道计算依赖关系的结构,则可以使用Range.Calculate和Sheet.calculate控制某些事情。

Excel现在使用multithreading计算 ,使得整个事情很难预测,除了在依赖关系树中的定向孩子。 看链接。

HTH!

对于更具体的问题“C1 = C1(B1,B2,B3)和B1 = B1(A1),B2 = B2(A1),B3 = B3(A1)

1)A1 2)B1,B2,B3(以任意顺序)3)C1

C1将只计算一次。

我不是从任何Excel文档,但从我的经验,Excel和我的工作电子表格的Java对象处理程序(请参阅本文 )。 从我所观察到的,Excel不会对单元格中的函数进行不必要的调用。

如果工作表的依赖关系树有几个可以“点燃”计算的“叶”,则不能确定Excel的起始位置。 如果打开一张纸并重新计算整张纸,则“独立”单元的计算顺序很难预测。 存储在工作表中的值的caching可能会影响重新计算。 (我所看到的是:第一个单元格触摸是在保存表单之前更改的最后一个单元格)。