19

我正在尝试根据产品的销售额评估每公斤的价格($/Kg)。如果产品在指定的时间段内实际售出,则此方法可以正常工作。但是,如果产品未售出,则 Kg(分母)最终为 0(零)并导致错误。- 除以零错误。

我试过这个

=iif(KgSold=0,0,Revenue/KgSold)

看来该iif函数正在计算真假结果。我该如何解决这个问题。

我应该改用该switch功能吗?

=switch(KgSold=0,0
        KgSold<>0,Revenue/KgSold)
4

3 回答 3

16

你是对的,它不会短路。太糟糕了。

你必须做这样的事情:

= Iif(KgSold = 0, 0, Revenue) / Iif(KgSold = 0, 1, KgSold )

开关功能也应该起作用。

于 2009-07-30T02:49:59.890 回答
5

发生这种情况是因为在 VBScript 中,IIF 中的所有条件都将在任何功能发生之前先进行评估。

于 2009-08-17T20:42:06.973 回答
0

将以下内容添加到您的代码中:

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

于 2015-06-11T02:39:24.333 回答