问题描述
我们正在将 excel 表转换为 web base,因此我们需要在 web base 应用程序开发中应用相同的 excel(循环引用)逻辑。
当我们必须计算 F3 单元格的值时,它使用 G3 单元格的值,而 G3 单元格的公式也使用 F3 单元格值。我们需要在 PHP 中实现这个逻辑。
在excel中,我们有以下公式:
F3 = 0/590.07+(1.45+0.055*G3/1000)/8.42-0
(结果是 = 0.21096279)
G3 = (38.2-F3*5.87)/(6.23+E3)*1000
(结果是 = 5932.848864)
最大迭代次数:100
最大变化:0.001
是否有助于在 PHP 中计算相同的结果?
解决方法
使其非循环,然后将值赋给 F3 和 G3。
根据结果反复重新计算值,直到获得所需的结果。
,在 Excel
中,如果启用了迭代计算,则只能计算循环引用。默认值是:使用最多 100 次迭代,如果值的变化低于 0.001,则停止迭代。所以你也需要这样做。
VBA
可以作为伪代码的代码:
Sub CIRCULAR()
E3 = 0
F3 = 0
G3 = 0
maxDelta = 0.001
For i = 0 To 100
F3a = F3
G3a = G3
F3 = 0 / 590.07 + (1.45 + 0.055 * G3 / 1000) / 8.42 - 0
G3 = (38.2 - F3 * 5.87) / (6.23 + E3) * 1000
If Abs(F3a - F3) < maxDelta And Abs(G3a - G3) < maxDelta Then Exit For
Next i
resultF3 = F3
resultG3 = G3
End Sub
顺便说一句:只有当 E3
包含 0
时,您的结果才是正确的。并且不清楚为什么 0/590.07
和 -0
这两个词在 F3
中的公式中,因为它们根本没用。