带有OR标准和ISERROR的IF声明

时间:2016-06-08 07:31:18

标签: excel error-handling excel-formula

我有一个不起作用的公式。

=IF(OR(AC358="",ISERROR(AC358), AC358=0),VLOOKUP(M358,FCal,3,TRUE),VLOOKUP(AC358,FCal,3,TRUE)

列AC中有一个vlookup,它将返回实际值0或错误#N / A.

当AC(vlookup)返回#N / A错误时,IF语句以其当前格式失败。

但是,当我

时,I​​F语句会起作用
  1. 硬编码实际值或零代入AC,或

  2. 如果我只用一个标准替换OR标准ISERROR(AC358)

  3. 所以我知道ISERROR本身是有效的,但它在OR语句中没有工作。

1 个答案:

答案 0 :(得分:1)

使用ISERROR或ISNA检查错误必须与其他计算分开进行;您无法在OR中使用更常规的标准嵌套错误检查。包含对包含#N / A的单元格的检查的OR将返回#N / A,而不是TRUE或FALSE。当ACD358包含#N / A错误时,=IF(ACD358=0, TRUE, FALSE)不返回FALSE;它返回#N / A.

=IF(ISNA(AC358), VLOOKUP(M358, FCal, 3), IF(OR(AC358="", AC358=0), VLOOKUP(M358, FCal, 3), VLOOKUP(AC358, FCal, 3)))

当错误检查返回TRUE时,处理立即转到第一个M358 VLOOKUP function;其他IF和OR不计算。

鉴于空白,零或#N / A可能会从FCal返回另一个#N / A,或许这个带有IFERROR的较短版本会更好。

=IFERROR(VLOOKUP(AC358, FCal, 3), VLOOKUP(M358, FCal, 3))

TRUE是VLOOKUP的 range_lookup 参数的默认值。为了清晰起见,除了包含它之外,没有必要。