如何在Excel上强制单元格求值顺序

如何在Excel上强制单元格求值顺序,excel,Excel,我使用的是一个自定义Excel加载项,它可以将多个函数导出到Excel,从而完成大量“幕后”工作。我想强制Excel按特定顺序计算对这些函数的调用。也就是说,如果 A1=附加功能(“Foo”) 及 B3=另一个附加功能(“Bar”) 然后我想强制Excel在B3之前评估A1。如何使用mininum hacking实现这一点,最好不使用VBA?这归结为如何在Excel中执行表达式树求值。它需要一个理由来按照这个顺序评估你的功能。您可以使B3依赖于A1的结果,例如B3=IF(为空(A1)、另一个Ad

我使用的是一个自定义Excel加载项,它可以将多个函数导出到Excel,从而完成大量“幕后”工作。我想强制Excel按特定顺序计算对这些函数的调用。也就是说,如果

A1=附加功能(“Foo”)

B3=另一个附加功能(“Bar”)


然后我想强制Excel在B3之前评估A1。如何使用mininum hacking实现这一点,最好不使用VBA?

这归结为如何在Excel中执行表达式树求值。它需要一个理由来按照这个顺序评估你的功能。您可以使B3依赖于A1的结果,例如B3=IF(为空(A1)、另一个AddInFunction(“Bar”)、另一个AddInFunction(“Bar”))


很长一段时间没有完成XLL,因此这是内存中的代码。

如果您可以将代码更改为XLL加载项,则可以向要排序的调用添加伪“触发器”参数(添加可选的XLOPER参数)。然后,通过添加对单元格的引用作为伪触发器参数,使调用依赖于希望它跟随的单元格

因此B3最终成为另一个附加函数(“Bar”,A1)

函数本身忽略触发器参数,每当A1改变时,B3将被计算,并且始终在A1之后(因为它取决于A1)


当然,如果您无法更改XLL,那么这也无济于事

谢谢,这将在第一次评估时起作用(A1为空时),但在我想重新评估电子表格时不起作用。有没有办法强迫Excel从以前的评估中删除输出?我最终为此使用了一些参数,但总体来说,这不是我想要的解决方案。