Excel中的数据表非常适合查看如果您的某个输入发生更改,数字会如何变化。但是:
=INDIRECT(<dynamic address>)
有效,但如果动态地址发生更改,则不会更新。因为我想做很多,第1点和第2点使得处理数据表非常不切实际。有没有办法在VBA中创建一个这样的函数?我尝试了一个改变变量值的UDF(例如=whatif(<hypothetical output>, <variable cell>, <variable hypothetical value>)
,但在VBA中不允许这样做(参见How to prevent VBA function from re-executing inside the code)。
答案 0 :(得分:1)
我很确定你可以使用subs而不是UDF来实现你的目标。基本上,概念是将工作表视为一个巨大的功能:
如果目标是某种非线性分析(如灵敏度分析),则子比较连续运行。如果目标是某种优化,则子驱动输入以实现结果。如果目标是某种统计分析或建模,那么子可以驾驶Monti Carlo。