【问题标题】:IF Statement with OR Criteria and ISERROR带有 OR 条件和 ISERROR 的 IF 语句
【发布时间】:2016-10-08 08:06:02
【问题描述】:

我的公式不起作用。

=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 语句以其当前格式失败。

但是,当我要么时,IF 语句就起作用了

  1. 将实数值或零硬编码到 AC,或

  2. 如果我只用一个条件替换 OR Criteria ISERROR(AC358)

所以我知道ISERROR 可以自己工作,但它不能在 OR 语句中工作。

【问题讨论】:

  • FCat命名范围内的值是升序排列的吗?
  • 是的,FCal 的嵌套 vlookup 工作正常。似乎是 OR 语句中的 ISERROR 问题
  • 作为更新,我通过将 AC 中的 vlookup 嵌套到 If(ISERROR(vlookup...),0,vlookup(...)) 中来解决问题。这样,AC 要么返回一个成功的值,要么返回 0,然后我的以下 IF OR 对它起作用。不回答原因,但至少给我一个结果。

标签: excel error-handling excel-formula


【解决方案1】:

使用 ISERROR 或 ISNA 检查错误必须与其他计算分开进行;您不能在 OR 中使用更传统的标准嵌套错误检查。对包含 #N/A 的单元格进行检查的 OR 将返回 #N/A,而不是 TRUE 或 FALSE。 =IF(ACD358=0, TRUE, FALSE) 当 ACD358 包含 #N/A 错误时不返回 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 参数的默认值。除了为了清楚起见包括它之外,没有必要。

【讨论】:

  • 谢谢吉普!一个优雅的替代我所做的。
猜你喜欢
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 2014-01-17
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多