问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

揭秘Excel表格计算链:图计算与按需计算的原理与应用

创作时间:
作者:
@小白创作中心

揭秘Excel表格计算链:图计算与按需计算的原理与应用

引用
CSDN
1.
https://blog.csdn.net/powertoolsteam/article/details/120413740

在Excel表格中,公式引擎的计算链是如何实现的?本文将从图计算、按需计算和脏值处理等多个维度,深入解析Excel表格中复杂计算的底层逻辑。

背景

在实际业务场景中,公式计算往往不是单一公式的独立运算,而是需要将一个大的运算分解成前后依赖的小运算。单元格之间的计算会出现相互依赖,计算顺序成为关键问题。为了解决这一问题,计算链应运而生,用于管理公式之间的依赖和先后顺序,处理电子表单中的复杂依赖关系。

计算链

让我们通过两个表格计算问题来理解计算链的概念:

  • 简单情况:当C1赋值为1时,A1的结果为3。但若修改C1的值为10,B1的内容还没有修改,A1依旧是3,然后B1=10+1=11,这里就会发现A1内容计算出错。

  • 复杂情况

在这个例子中,我们需要从不依赖其他节点的节点内容开始计算。单元格A依赖F、E,D依赖C、B,C、B又分别依赖F、E,唯二不依赖其他节点的内容是E、F。这样就得到了一个稳定正确的计算顺序:F,C,E,A,D,B。

有向无环图和有向有环图的计算

在一张图中,如果从一个节点出发,最后能回到这个节点,我们称之为有向有环图,反之被称作有向无环图。

有向无环图的计算

对于每一个节点存在入度和出度的概念,入度表示多少箭头指向当前节点,出度表示当前节点有多少箭头指出。在对有向无环图进行计算时,利用图中入度作为优先级排序,每次运算入度为0的节点,然后移除。

有向有环图的计算

如果将上图中B-C之间的箭头反向调换,就会形成一个有向有环图。此时需要采用迭代计算的方法,把上一步的计算结果代入这一步的运算中去,经过多步这样的计算,可以得出一个更为接近的结果。

按需计算

按需计算采用calcOnDemand函数,核心工作原理是压栈并计算所需要的节点内容。这种方法只计算需要的内容,但在某些情况下可能不如图计算高效。

图计算VS按需计算

图计算比按需计算更加稳定,而按需计算在不同情况下会有不同的表现。实际使用中可以根据具体的使用场景采用不同的计算策略。

脏值计算

当某个节点的值被修改时,需要根据传播途径,标记所有需要重算的节点。这种方法在实际应用场景下,可以大大减少运算的内容。

拓展思考

  1. 示例中的图计算,可否改用按需计算?
  2. 可不可以先计算E的值,再标记并重算C B D A?
  3. 根据传播途径标记需要重算节点的优势?

解答:

  1. 该图可以进行按需计算,因为按需计算和图计算都可以对图内容进行正确计算。
  2. 该图中不可以先算E,然后重标CBDA,因为一旦我们一但先计算E,此时C依旧依赖E的内容,而C又不能先于E计算,这时ABCD节点数值都会变得不可靠,这个计算引用链就会被完全破坏。
  3. 脏数据的处理中只对传播路径上的节点进行处理,在实际应用场景下,几百个单元格数据处理使,可以大大减少运算的内容。

总结

计算链将一个个单元格计算串联起来,分为普通计算和迭代计算。这里介绍了两种不同的计算方式——图计算和按需计算,在面对不同情况需要选择采用不同的计算策略。计算链在整个计算过程中不像单元格的计算那么明显,但是却比单元格的计算更加复杂。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号