Excel-迭代计算收敛问题/无限循环

时间:2018-07-31 14:29:17

标签: excel loops iteration self-reference

我正在使用Microsoft Excel 2016开发车辆单圈时间模拟。 到目前为止,我构建的电子表格非常复杂,涉及数千行和各列之间的许多循环引用,大约50个。

我遇到的问题是计算没有收敛:迭代(利用内置算法)永远不会停止并且值会继续变化;特别是,包含像“等于另一个单元格”之类的公式的单元格返回的值与该公式不符,与引用的单元格中的值略有不同。无论设置中的“最大变化”值如何,都会发生这种情况。

结果总体上符合预期,但是由于计算无休止,这些小的偏差使电子表格难以使用。

我意识到的一件事是,所有列都至少引用了另一列:鉴于缺少“初始猜测”,这可能引发问题吗?

无论如何,这个问题可能与算法的任何已知限制有关,还是可以通过调整设置或工作簿本身来解决?

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我以前有过这样的情况。我用来解决此问题的两个技巧是,首先将引用的依赖关系软化到差异的一小部分。像是,单元格A1等于单元格B1,但也许最好使它...

  

= A1 +(B1-A1)/ 10

...我知道这似乎很困难,但是您可以预测计算机会做什么。假设它们从0和100开始。迭代进行:

  

B1 = 100

     

A1 = 0

     

A1 = 0 +(100)/ 10 = 10

     

A1 = 10 +(100-10)/ 10 = 19

     

A1 = 19 +(100-19)/ 10 = 27.1

     

...

     

A1≈100 = B1

我使用的另一个技巧是使循环中的一个单元格成为一个值(在记事本中保留公式文本的副本以备后用),然后将公式粘贴回该单元格中。这是获取循环初始条件的方法。

好问题!祝你好运!