我正在尝试根据产品的销售额评估每公斤的价格($/Kg)。如果产品在指定的时间段内实际售出,则此方法可以正常工作。但是,如果产品未售出,则 Kg(分母)最终为 0(零)并导致错误。- 除以零错误。
我试过这个
=iif(KgSold=0,0,Revenue/KgSold)
看来该iif
函数正在计算真假结果。我该如何解决这个问题。
我应该改用该switch
功能吗?
=switch(KgSold=0,0
KgSold<>0,Revenue/KgSold)
我正在尝试根据产品的销售额评估每公斤的价格($/Kg)。如果产品在指定的时间段内实际售出,则此方法可以正常工作。但是,如果产品未售出,则 Kg(分母)最终为 0(零)并导致错误。- 除以零错误。
我试过这个
=iif(KgSold=0,0,Revenue/KgSold)
看来该iif
函数正在计算真假结果。我该如何解决这个问题。
我应该改用该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