我具有以下在查询中创建列的函数:
MTD:IIf(IsError(FormatNumber([62xx]![F40])),0,FormatNumber([62xx]![F40]))
这链接到一个Excel文件,人们将数字和文本放在同一列中(在此示例中为F40)。我需要知道我正在看的东西是数字还是文本。如果是文本,我想要一个零,如果是数字,我想要一个数字。我知道在文本行上使用FormatNumber([C107_62xx]![F40])时遇到错误。我假设当我遇到错误时,我上面的iif公式会将其转换为零,世界将会欣喜若狂。由于某些原因,即使我的iif语句我仍然遇到#error。我究竟做错了什么?
我也尝试使用IsNumeric函数,但仍然得到#NUM!发生的错误。
最佳答案
IsError
不会执行您认为的操作。在帮助主题中,它“返回指示表达式是否为错误值的 bool 值”。不是表达式是否触发错误,而是表达式是否是一个错误值。
抱歉,这种解释可能还不够清楚,但是我不知道如何做得更好。因此,我建议您考虑使用IsNumeric()
表达式来满足您的需求。
IIf(IsNumeric([62xx]![F40]), FormatNumber([62xx]![F40]), 0)
这是查询中的相同表达式,其输出如下。
SELECT
[62xx].F40,
IIf(IsNumeric([62xx]![F40]), FormatNumber([62xx]![F40]), 0) AS MTD
FROM [62xx];
F40 MTD
----- ----
foo 0
1 1.00
2.345 2.35
bar 0