我有以下函数在我的查询中创建一个列:
MTD:IIf(IsError(FormatNumber([62xx]![F40])),0,FormatNumber([62xx]![F40]))
这链接到Excel文件,人们将数字和文本放在同一列中(本例中为F40)。我需要知道我正在看的东西是数字还是文字。如果它是文本我想要一个零,如果它是一个数字我想要数字。我知道当我在文本行上使用FormatNumber([C107_62xx]![F40])时出现错误。我会假设当我得到一个错误,然后我的iif公式将其转换为零,世界将会高兴。出于某种原因,即使使用我的iif语句,我仍然会收到#error。我做错了什么?
我也尝试过使用IsNumeric函数,但我仍然得到#NUM!通过的错误。
答案 0 :(得分:5)
IsError
没有按照您的想法行事。从帮助主题中,它“返回一个布尔值,指示表达式是否为错误值。”不是表达式是否触发错误,而是表达式 是 错误值。
对不起,这个解释可能不够清楚,但我不知道怎么做得更好。所以我建议你在这里考虑这个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