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 对比
| IFERROR | IF + 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 空白单元格填充 — 免费