iif(Iserror())函数仍然返回#error

时间:2014-03-26 18:49:26

标签: function ms-access ms-access-2010

我有以下函数在我的查询中创建一个列:

MTD:IIf(IsError(FormatNumber([62xx]![F40])),0,FormatNumber([62xx]![F40]))

这链接到Excel文件,人们将数字和文本放在同一列中(本例中为F40)。我需要知道我正在看的东西是数字还是文字。如果它是文本我想要一个零,如果它是一个数字我想要数字。我知道当我在文本行上使用FormatNumber([C107_62xx]![F40])时出现错误。我会假设当我得到一个错误,然后我的iif公式将其转换为零,世界将会高兴。出于某种原因,即使使用我的iif语句,我仍然会收到#error。我做错了什么?

我也尝试过使用IsNumeric函数,但我仍然得到#NUM!通过的错误。

1 个答案:

答案 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