我正在尝试根据产品销售情况评估每千克的价格($/Kg)。如果在指定的时间段内未实际销售该产品,则会出现除以0(分母为千克)的错误,导致错误结果。我尝试了以下方法:
=iif(KgSold=0,0,Revenue/KgSold)
看起来,iif
函数正在计算 true 和 false 的结果。我该如何避免这种情况?
我应该使用 switch
函数吗?
=switch(KgSold=0,0
KgSold<>0,Revenue/KgSold)
我正在尝试根据产品销售情况评估每千克的价格($/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 )
开关功能也应该正常工作。
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)
在文本框中输入表达式