Ответ 1
Вы правы, это не короткое замыкание. Это отстой.
Вам нужно будет сделать что-то вроде этого:
= Iif(KgSold = 0, 0, Revenue) / Iif(KgSold = 0, 1, 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