指南
Excel 公式出现 #REF! 怎么办?原因、批量查找与修复
更新于 2026-10-18
#REF! 是 Excel 在说:这个公式要找的东西已经不在了。和 #DIV/0!、#N/A 不同,它通常不会因为数据变化而自己消失。
常见原因
- 删除了被引用的行、列或单元格:
=B5*2 引用的第 5 行被删掉,公式变成 =#REF!*2;
- 删除了被引用的工作表:引用那张表的公式全部变成
#REF!;
- 剪切粘贴覆盖了被引用的区域;
- 复制公式后相对引用越界:比如把第 2 行的
=A1 复制到第 1 行,引用会指到表格外面;
- VLOOKUP / INDEX 的列号超出范围:
=VLOOKUP(x,A:C,5,0) 只有 3 列却要第 5 列;
- 外部链接指向的文件或工作表不存在了。
前两种最常见,而且有一个关键区别:被删掉的引用已经写死在公式里(公式文本里就有 #REF!),撤销之外没有办法自动恢复原来的地址。
一次找出所有错误
定位条件:
- 选中整张表(Ctrl+A);
- F5 →「定位条件」→ 选「公式」,只勾「错误」,确定;
- 所有显示错误值的公式单元格都会被选中,可以统一填色标记。
查找:Ctrl+F,查找内容填 #REF!,「选项 →查找范围」选「公式」,「查找全部」,能列出公式文本里写着 #REF! 的单元格,也就是断链公式。
这两种方法都只能在当前工作表里做,表多的时候要每张表来一遍。
修复思路
- 知道原来引用的是哪里:直接把公式里的
#REF! 改回正确的地址;
- 原来的数据已经不需要了:把这些公式改成它应有的值,或者删掉;
- 只是不想让错误值影响汇总:外面包一层
IFERROR(原公式, 0)。注意这只是把错误藏起来,断掉的引用仍然是断的,IFERROR 也会把其他本该暴露的错误一并藏掉。
预防:删除行列或工作表之前,先「公式 → 追踪从属单元格」看看有没有公式在用它。
批量检查和修复
xlszip 的体检 会扫描整本工作簿:
- 统计各类错误值(
#REF!、#DIV/0!、#N/A、#NAME? 等)各有多少个;
- 单独列出断链公式,也就是公式文本里已经写死
#REF! 的,重算也回不来;
- 同时检查循环引用、手动计算模式、易失函数等其他问题。
发现错误后可以在体检页一键修复:
- 断链公式、
#REF! / #NAME? 这类结构性错误公式冻结成当前显示的值:显示不变,但坏掉的公式去掉了,之后逐个填上正确的数即可;
- 勾选修复选项后,
#DIV/0! 等运算错误外包 IFERROR,原公式保留,Excel 打开时重算生效;
- 每一处改动都逐格复核,页面上列出每类改了几处。
只是不想让表格满屏错误、准备美化后发出去的,也可以在表格美化里勾选清理错误显示。