我有一个不起作用的公式。
=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 语句都会起作用
将实数值或零硬编码到 AC 中,或者
如果我仅用一个条件替换 OR 条件
ISERROR(AC358)
所以我知道 ISERROR
本身可以工作,但它在 OR 语句中不起作用。
最佳答案
使用 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 参数的默认值。除了为了清楚起见而将其包括在内之外,这是没有必要的。
关于excel - 带有 OR 标准和 ISERROR 的 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37695991/