我得到了我认为是一个非常简单的小switch语句,但是它在某些单元格中返回了一条#error消息……我编写的表达式是:
=Switch(ReportItems!DisplayCheck.Value = "Didn't Exist", "-", ReportItems!FTEP.Value = 0, 0, TRUE, ReportItems!SicknessP.Value/ReportItems!FTEP.Value)
这仅在DisplayCheck =“不存在”的单元格上显示错误-所有其他单元格都正常工作。所以我知道它至少在某种程度上起作用,但是由于某些原因,当第一个表达式返回true时不是吗?
我也尝试过:
=Switch(ReportItems!FTEP.Value = "-", "-", ReportItems!FTEP.Value = 0, 0, TRUE, ReportItems!SicknessP.Value/ReportItems!FTEP.Value)
但是每个单元格都返回了#error
。非常感谢您提供任何见识。
答案 0 :(得分:0)
记住switch和iif是方法,并且没有流控制设备,因此每条路径都将执行,除以0会导致错误。
因此,即使它们被控制流屏蔽,也必须替换为0 还必须考虑空值
=Switch(ReportItems!FTEP.Value = "-", "-", ReportItems!FTEP.Value = 0 or isnothing(ReportItems!FTEP.Value)
, 0, TRUE, ReportItems!SicknessP.Value/iif(ReportItems!FTEP.Value = 0 or
isnothing(ReportItems!FTEP.Value),1,ReportItems!FTEP.Value))
答案 1 :(得分:0)
我认为问题在于您的switch语句返回不同的数据类型。作为测试,请尝试将第一个返回值从"-"
更改为nothing
或一些明显的数字,例如-999
。
如果获得正确的结果(没有错误),则必须决定如何使所有数据类型相同。选项可能是
"-"
替换为nothing
"-"
替换为0 您可能最终会得到类似
的信息=Switch(
ReportItems!DisplayCheck.Value = "Didn't Exist", "-",
ReportItems!FTEP.Value = 0, "0",
TRUE, CStr(ReportItems!SicknessP.Value/ReportItems!FTEP.Value)
)