我试图评估基于销售产品的每公斤($ / kg)的价格。 如果产品在规定的期限实际上可以出售这工作得很好。 然而,如果产品未售出的千克(分母)最终被0(零)和一个错误的结果。 - 零错误鸿沟。
我想这
=iif(KgSold=0,0,Revenue/KgSold)
看来, iif
函数计算两者的结果true和false。 如何解决这个问题。
我应该使用switch
功能呢?
=switch(KgSold=0,0
KgSold<>0,Revenue/KgSold)
你说得对,它不是做短路。 这吮吸。
你必须做这样的事情:
= Iif(KgSold = 0, 0, Revenue) / Iif(KgSold = 0, 1, KgSold )
开关功能也应该工作。
这是因为在VBScript中的IIF内的所有条件,将首先任何功能发生之前评估。
以下添加到您的代码:
Public Function SafeDiv(byval num as double, byval den as double) as object
If den = nothing then return nothing
If den = 0 then return nothing
return num / den
End Function
然后调用
=Code.SafeDiv(Revenue,KgSold)
在文本框中epression