在线 Excel 编辑器
免费使用

IFERROR 函数:语法、示例与错误排查

更新于 2026-10-13 · 免费 · 兼容 Excel 与 Google Sheets

语法

=IFERROR(值, 错误值)

快速答案

IFERROR 包住一个公式,出错时返回备用值:=IFERROR(A2/B2, 0) 在除零时显示 0 而不是 #DIV/0!。它会捕获所有错误,包括 #REF! 和 #NAME?——用来美化结果很好用,但也会让断裂的引用看起来像正常数据,结构性错误要靠修复而不是掩盖。

语法

=IFERROR(值, 错误值)
参数含义
值要计算的公式或表达式:如 A2/B2 这样的除法、VLOOKUP(...) 这样的查找,任何可能返回错误的公式。
错误值当「值」出现任何错误时返回的内容——0、显示为空的 ""、带引号的文本提示,或另一个公式。

根据区域设置,参数可能用分号而不是逗号分隔:=IFERROR(A2/B2; 0)。在以逗号作为小数符的国家/地区这是标准写法。

基本示例

=IFERROR(A2/B2, 0)

经典的除零保护:当 B2 为空或 0 时,除法会返回 #DIV/0!,IFERROR 把它换成 0。仪表盘里的比率和百分比保持干净,不会整列喷错误代码。

=IFERROR(VLOOKUP(E2, $A$2:$C$50, 3, FALSE), "未找到")

更友好的查找:当 E2 在表中没有匹配时,VLOOKUP 返回 #N/A,备用值改为显示「未找到」。针对未命中场景,IFNA 也能做同样的事,同时不掩盖其他错误。

=IFERROR(VALUE(A2), A2)

把「123」这样的文本转成数字 123;当 A2 是无法转换的文本(或本身含字母)时,返回原始内容而不是 #VALUE!。混合列的单格抢救方案。

=IFERROR(A2/B2, "")

出错时显示一个看起来空白的单元格。注意区别:"" 什么都不显示,但仍是文本值,AVERAGE 和图表会把它当文本处理,而不是可跳过的空白。

IFERROR 捕获所有错误,不只是你预期的那一个:=IFERROR(A2/B2, 0) 也会把删除列导致的 #REF! 变成整洁的 0。尽量包最小的表达式,结构性错误要修而不是遮。

常见错误与修复方法

症状最常见原因修复方法
#NAME?IFERROR 拼写错误——或你的 Excel 是其他语言版本,函数名被本地化了(SI.ERROR、SIERREUR、WENNFEHLER)。输入 =IF 让自动补全完成函数名,或用对应语言版本的 Excel 打开文件。
错误仍然显示出错的部分在包裹之外,或备用值本身出错:=IFERROR(A2/B2, C2/D2) 在 D2 为 0 时再次显示 #DIV/0!,因为出错的是备用值。把备用值也包一层——=IFERROR(A2/B2, IFERROR(C2/D2, 0))——或修复备用值中的错误来源。
真实错误消失了IFERROR 吞掉了结构性错误:删除列导致的 #REF! 现在返回 0,没人发现表格已经断了。包裹范围保持最小并修复根因。查找未命中场景用 IFNA,它会让 #REF! 等其他错误继续可见。
0 和空白流入下游公式备用值 0 会被 AVERAGE 当成真实数值,"" 会在下游算术里引发 #VALUE!。按下游用途选择备用值:求和用 0,文本安全处才用 "",或用 NA() 让真正的缺口不参与平均。
数字和文本混杂的列在 =IFERROR(VALUE(A2), A2) 中,备用值返回了原始文本,整列变成一半数字一半文本。先清洗数据源——去除多余空格、转换文本数字——之后纯 VALUE 就能正常工作,不需要备用值。

不可见空格同样导致查找未命中:VLOOKUP 对带尾部空格的「已付款 」报 #N/A,IFERROR 把它藏成「未找到」,真正的原因被掩盖。先清洗列,备用值就很少触发。

IFERROR 与 IF+ISERROR 对比

IFERRORIF + ISERROR
参数个数两个——表达式和备用值三个——测试、备用值,以及再写一遍的表达式
可用版本Excel 2007 及以后(Google Sheets 同样支持)所有 Excel 版本,包括 2003(Google Sheets 同样支持)
计算成本表达式只计算一次表达式计算两次——一次在 ISERROR 里,一次作为结果——大范围时明显更慢
=IF(ISERROR(A2/B2), 0, A2/B2)

老式写法,等价于 =IFERROR(A2/B2, 0)。它存在是因为 Excel 2007 之前没有 IFERROR——与很老版本共享的文件仍然需要这种形式。在任何现代 Excel 或 Google Sheets 中,IFERROR 更短、只算一次,是默认选择。

Google Sheets 中的 IFERROR

Google Sheets 支持与 Excel 相同两个参数、相同行为的 IFERROR,上面的公式可以直接粘贴使用。

  • 它捕获同样的错误集合:#DIV/0!、#N/A、#VALUE!、#REF!、#NAME?、#NUM! 和 #NULL!。
  • 在以逗号作为小数符的区域设置(欧洲和拉美大部分地区)中,参数之间输入分号:=IFERROR(A2/B2; 0)。Excel 行为相同。
  • Sheets 同样有 IFNA,只捕获 #N/A——当结构性错误仍需显示时,这是 VLOOKUP 等查找函数更好的保护。
  • Sheets 的 IFERROR 天然支持数组:配合 ARRAYFORMULA,一个包裹就能覆盖整个输出区域。

限制与进阶技巧

  • IFERROR 不区分错误类型:#N/A、#REF! 和 #DIV/0! 全部坍缩成同一个备用值。先用裸公式诊断,确认无误后再包裹。
  • 只关心查找未命中时改用 IFNA——它让 #REF! 等错误继续可见,断裂的引用无法伪装成「未找到」。
  • 备用值是一个值,不是真正的空白:"" 看着空但属于文本,0 会拉低平均值。根据下游用途选择。
  • 不要条件反射地包整列:成千上万个 IFERROR 拖慢排查、掩盖数据问题。修复数据源,保护范围保持最小。
  • 想让兜底本身保留信号,返回 NA() 而不是 0:=IFERROR(VLOOKUP(...), NA()) 让真正的未命中在图表和统计里保持可见。

IFERROR 是抛光,不是维修。先稳住公式,再用它保持报表干净——然后把残留的空白补齐,让整片区域读起来像完成品。

相关工具

相关函数

常见问题

IFERROR 在 Excel 中有什么用?

它计算一个公式,结果为任何错误时返回备用值:=IFERROR(A2/B2, 0) 在除零时显示 0。公式正常时结果原样通过——IFERROR 不会改动正确的值。

IFERROR 能捕获哪些错误?

全部:#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 和 #NULL!。覆盖面广既是优势也是风险——你想捕获的无害 #N/A 和结构性错误会被一起隐藏。

IFERROR 怎么和 VLOOKUP 搭配?

包住整个查找:=IFERROR(VLOOKUP(E2, $A$2:$C$50, 3, FALSE), "未找到")。E2 无匹配时显示「未找到」而不是 #N/A。这种场景更推荐 IFNA——只捕获 #N/A,其他错误仍然显示。

IFERROR 和 IFNA 有什么区别?

IFERROR 捕获所有错误,IFNA 只捕获 #N/A。查找场景通常选 IFNA:未命中显示「未找到」,断裂引用(#REF!)仍然报错,方便修复。

为什么我的 IFERROR 公式仍然显示错误?

要么出错的部分在包裹之外,要么备用值本身出错:=IFERROR(A2/B2, C2/D2) 在 D2 为 0 时显示 #DIV/0!。把备用值也包一层,或修复其中的错误。

IFERROR 能返回空单元格吗?

可以返回「看起来空」的单元格:=IFERROR(A2/B2, "") 什么都不显示。但 "" 是文本值,不是真正的空白——AVERAGE、COUNT 和图表都把它当文本。下游需要区分缺口时用 0 或 NA()。

IFERROR 在 Google Sheets 里能用吗?

能——同名、同两个参数、同样行为。只有参数分隔符随区域设置变化:逗号小数符地区输入分号 =IFERROR(A2/B2; 0)。Sheets 也有含义相同的 IFNA。

准备好处理你自己的文件了吗?

打开Excel 空白单元格填充 — 免费