2015-10-13 79 views
1

我有一个UDF收集其他功能的结果,并将它们发送到计算和发送响应的Web API。例如在其他功能之后运行UDF?

  A      B     C    D 
7 =CalcResult(E7, F7) =CalcResult(G7, H7)  234  =SendToAPI(A7,B7,C7) 
8 =CalcResult(E8, F8) =CalcResult(G8, H8)  274  =SendToAPI(A8,B8,C8) 
9   ...     ...     ...    ... 

会发生什么事是,当你运行它SendtoAPI职位的API两次用一个空值2和C,则第二与calcResult完成后正确的数据值。

有没有什么方法可以先订购?

将SendToAPI设置为最后一次运行?

+0

为什么不'= SendToAPI(CalcResult(E8,F8),CalcResult(G8,H8),C7)'?如果C7是一个公式,那么坚持在那里。 – Jeeped

+0

感谢您的快速响应,但客户希望在这些部分通过时看到这些部分的结果,例如其中一个可能是计算包交付所需的天数以及另一个功能可能需要的天数。 –

+0

也许你可以在函数开始时检查UDF SendToAPI参数的有效性,如果有一个是Null,可以退出? –

回答

3

当使用尚未计算的参数调用UDF时,UDF在计算序列中经常计算多次。一个未计算的变体参数在UDF中显示为空变体:因此解决方案是退出UDF而不发送给Web API(如果任何参数为空)。

看我的网站页面http://www.decisionmodels.com/calcsecretsj.htm了解更多详情

而且我的博客文章https://fastexcel.wordpress.com/2011/11/25/writing-efficient-vba-udfs-part-7-udfs-calculated-multiple-times/

+0

非常感谢,它花费了大量的时间,但当变量以变量形式传入时,IsCalced函数可以很好地工作。非常有用的响应和伟大的网站有很多提示。肯定会推荐给其他人。 –

相关问题