Excel重新计算

Excel重新计算,excel,Excel,有人能解释下一段最后一句话的意思吗 当我更改公式时,为什么新打开的工作表会更快地重新计算 为同一个变更构建的依赖关系树不应该总是相同的,并且必须遍历所有这些变更吗 依赖关系树通知Excel哪些单元格依赖于哪些其他单元格,或者等效地通知Excel哪些单元格是哪些其他单元格的前置单元格。从该树中,Excel构建一个计算链。计算链按公式的计算顺序列出包含公式的所有单元格。在重新计算期间,如果Excel遇到依赖于尚未计算的单元格的公式,则会修改此链。在这种情况下,正在计算的单元格及其从属项将沿链向下

有人能解释下一段最后一句话的意思吗

  • 当我更改公式时,为什么新打开的工作表会更快地重新计算
  • 为同一个变更构建的依赖关系树不应该总是相同的,并且必须遍历所有这些变更吗
依赖关系树通知Excel哪些单元格依赖于哪些其他单元格,或者等效地通知Excel哪些单元格是哪些其他单元格的前置单元格。从该树中,Excel构建一个计算链。计算链按公式的计算顺序列出包含公式的所有单元格。在重新计算期间,如果Excel遇到依赖于尚未计算的单元格的公式,则会修改此链。在这种情况下,正在计算的单元格及其从属项将沿链向下移动。因此,在前几个计算周期中刚刚打开的工作表中,计算时间通常可以缩短

我还注意到,当我打开两个excel文件时,excel重新计算的速度要慢得多(慢了两倍多)

有人能解释一下原因吗?我使用的是volatile函数,但速度慢了2倍多?

1)Excel的智能recalc从尝试使用上次使用的计算序列开始。当它完成洗牌的计算序列,这通常是一个很好的起点,为下一个recalc。但是一个好的起点取决于你在下一次重选之前改变了多少。此外,对于多核和多线程calc,还可以通过检查上一个recalc中发生的情况来改进下一个recalc


2) 使用2个excel文件打开excel全局计算:同时打开两个工作簿:因此计算链更长,处理时间更长。

第一个问题:如果A1是
=C1
且C1是
=B1
,则如果是第一次计算,所有要计算的单元格将按顺序排列。在这种情况下,A1->C1。但如果A1被重新计算,excel会注意到C1尚未计算,并将A1移到C1下方,然后计算C1->A1。如果第二次计算已经设置了第一次执行C1的顺序,这样就不需要重新排序->现在计算整个工作表对于第二部分更快,迭代和对其他工作簿的引用也是因素,因此易失性函数通常会被重新计算多次。这将以指数方式进行汇总,因此,计算时间只需再乘以一点