Excel 公式

IFERROR + XLOOKUP:构建防错 Excel 公式

何时使用 IFERROR、IFNA 和 XLOOKUP 的 if_not_found 参数 — 以及何时隐藏错误正是错误的举动。公式的实用模式只有在应该失败时才会大声失败。

分散在报告中的 #N/A 看起来已经损坏,因此本能反应是将所有内容包装在 IFERROR 中并继续。有时这是对的。通常,它会在整洁的空白单元格下隐藏一个真正的问题——查找失败、被零除、键中的拼写错误。

本指南介绍了处理公式错误的三种工具、它们之间的区别,以及隐藏 预计 错误同时让 意想不到 错误保持可见的模式。

三个工具

IFERROR 捕获 错误类型:

=IFERROR(A2/B2, 0)

如果除法产生 #DIV/0!#VALUE!#REF!——任何东西——你会得到 0。这个广度也是它的危险:来自删除列的 #REF! 值得关注,而不是沉默的 0。

干扰素 仅捕获 #N/A

=IFNA(VLOOKUP(A2, Prices!A:B, 2, FALSE), "not listed")

这几乎总是您在查找时想要的:“未找到值”是预期条件,而同一公式中的 #VALUE!#REF! 仍然表示真正的错误。

XLOOKUP 内置 if_not_found 使查找本身成为后备部分:

=XLOOKUP(A2, Prices!A:A, Prices!B:B, "not listed")

比包装更干净,并且它只处理未找到的情况 - 其他错误仍然存在。

经验法则:处理预期,暴露意外

每个公式问一个问题:这里哪个错误是正常的?

  • 可能合法错过的查找 → 处理“#N/A”(IFNA 或 XLOOKUP 的后备)。
  • 分母可以合法为零的比率 → 显式测试分母:
=IF(B2=0, "", A2/B2)

测试条件比捕获错误更好:IF(B2=0,…) 记录 为什么 后备存在,而同一分区周围的 IFERROR 也会吞下由 B 列中的文本引起的 #VALUE!

  • 其他一切→让它出错。可见的“#REF!”会花费你一分钟;隐形的报告会让您付出错误的代价。

经典错误

覆盖整个列的 IFERROR。 您发送的报告有 40 个零,其中 3 个是真正的零,其中 37 个是无人注意到的重命名表。

IFERROR(..., "") 喂养数学。 数字列中的空字符串会使下游 SUM 产生微妙的错误,并在算术中产生 #VALUE! - 您隐藏的错误在两列后返回,离其原因更远。

捕获指示脏数据的错误。 如果 VALUE(A2) 由于列混合文本和数字而出错,则修复为 清洗色谱柱,不捕获症状。

审核充满隐藏错误的工作表

继承一个工作簿,其中每个公式都包含在 IFERROR 中?两个动作:

  1. 数一下被抓到的东西。 在辅助列中,在没有包装器的情况下重复内部公式,并使用在范围内输入的 =SUM(--ISERROR(...)) 来计算错误。
  2. 请助理审核。 Excel 的人工智能 可以扫描工作表的公式,列出当前正在抑制错误的单元格以及每个错误的类型,并区分“查找未命中,正确处理”和“损坏的引用,默默隐藏” - 然后修复您批准的公式,并在进行任何更改之前自动备份。

这种公式审核手动进行很乏味,但对于以编程方式读取工作簿的工具来说却很快。如果您更愿意用句子描述目标而不是构建辅助列,请使用 免费试用该插件 — 对于首先编写这些公式的简单英语路线,请参阅 AI公式生成

常见问题解答

IFERROR 和 IFNA 有什么区别?

IFERROR 捕获每种错误类型; IFNA 仅捕获#N/A(“未找到”错误)。在查找方面,更喜欢 IFNA 或 XLOOKUP 的 if_not_found 参数,以便避免像 #REF 这样的结构错误!保持可见。

我应该在任何地方使用 IFERROR 吗?

否。仅处理您预期的错误(通常是查找未命中和零分母)并让意外错误显示。可见错误是诊断信息;隐藏的一个是未来的错误报告。

如何在 Excel 中查找所有有错误的单元格?

按 F5 → 特殊 → 公式 → 仅检查错误。 Excel 选择工作表中的每个错误单元格。人工智能助手可以更进一步,根据错误类型和原因对它们进行分类。