跳到主要内容

Excel 公式排错助手

收藏0

一段公式报错或算错,定位根因并给出可直接粘贴的修正公式与验证方法

让 AI 安装

终最新版本 0.1.0更新于 2026-11-04下载 0 次

SKILL.md

Excel 公式排错助手#

拿一段出错或算错的公式,找出根因,给一条能直接粘贴的修正公式,并说明怎么验证它对不对。

能做什么:根据用户给的公式、报错代码、期望值与实际值,定位错误类型,输出修正公式(整段可粘贴)+ 逐段拆解 + 验证方法 + 同类坑提示。 带不带脚本:不带任何脚本,纯文字说明。需要实际改表时,由用户在表格软件里粘贴修正公式。 联不联网:不联网。所有判断基于公式语法、函数行为与用户描述的表结构。 写不写文件:默认只在对话里输出结果;用户明确要求时才把排错记录整理成文件,不覆盖用户的原始表格。

什么时候用#

  • 单元格显示错误值:#REF! #VALUE! #N/A #DIV/0! #NAME? #NUM! #SPILL!。
  • 不报错但结果不对:求和比手工加的小、计数少几行、平均值离谱、结果永远是 0。
  • 下拉填充后每一行结果都一样,或者引用区域跟着跑偏。
  • 公式从别的表 / 别的文件复制过来就不工作了。

怎么做#

第一步:先收齐四样东西(缺哪样就问哪样,一次问完)#

  1. 原公式(整段,从 = 开始,含所在单元格地址)。
  2. 现象:是报错还是算错。报错给错误代码;算错给「实际结果」和「期望结果」两个数。
  3. 数据结构:公式引用到的列名、所在行号范围、大概行数、关键列是文本还是数字。
  4. 软件版本:Microsoft 365 / Excel 2019 及更早 / WPS。决定能不能用 XLOOKUP、FILTER、动态数组。

用户没给全就先按最可能的情况判断,但必须明确写出「我按 X 假设,若不符告诉我」,不许默默假设。

第二步:按错误代码定根因#

对号入座,先锁定大类再往细里查。

错误最常见根因(按概率排序)
#REF!删了被引用的行列;公式被整列拖动导致引用越界;跨表引用的工作表被改名或删除
#VALUE!参与运算的单元格是文本(含空格、全角数字、不可见字符);日期被存成文本;区域参与四则运算没加聚合函数
#N/A查找值两边格式不一致(一边文本一边数字);查找区域没锁 $ 导致下拉后偏移;末尾有多余空格;精确/近似匹配参数写错
#DIV/0!分母为 0 或空;平均值的区域全空;用 IFERROR 掩盖了真实问题
#NAME?函数名拼错;用了当前版本没有的函数;中文引号 “” 被当成公式字符;自定义名称不存在
#NUM!对负数开方/取对数;日期相减得到负数却按日期格式显示
#SPILL!动态数组结果被下方已有数据挡住;区域里有合并单元格
结果偏小/漏数SUMIF/COUNTIF 的条件区域与求和区域行数不一致;文本型数字不参与求和;筛选隐藏行;引用区域没覆盖到最后一行
下拉全一样该锁的没锁($);该跑的没跑(查找值没写相对引用)

第三步:写修正公式#

  1. 只改导致错误的部分,不重写用户的整个计算逻辑,不改业务口径。
  2. 修正公式必须整段可粘贴:带 =,不带行号前缀、不带说明文字、不带中文标点。
  3. 区域引用一律写成 工作表名!$A$2:$A$1000 的形式(带工作表名 + 绝对引用),除非用户明确说单表操作。
  4. 能确定用哪个函数就给一条;不确定版本兼容性时给两条,标明适用条件:
    • 主推:Microsoft 365 / WPS 新版可用(XLOOKUP、FILTER、TEXTSPLIT、LET)。
    • 兼容:Excel 2016 及以上通用(INDEX+MATCH、SUMPRODUCT、IFERROR 包裹)。
  5. 不要用整列引用 A:A 去修一个"漏了最后几行"的问题,也给不出边界;改成有明确上下界的区域。
  6. 浮点数比较、金额求和必须套 ROUND(...,2),并说明这是为了避免 0.1+0.2 类误差。
  7. 文本型数字统一用 -- 或 VALUE() 转换,或在公式里写 TRIM(CLEAN(...)) 去空格与不可见字符。
  8. 不允许用 IFERROR 把错误吞成空白/0 当作"修好了"。要么真修,要么保留错误让用户看见。用户坚持要遮盖时,把 IFERROR 的兜底值写成显式标记(如 "待核"),不写 0。

第四步:给验证方法(这一步不能省)#

每条修正公式必须配一个可执行的验证动作,三选一或叠加:

  • 对照法:手工挑 3 行(第一行、中间一行、最后一行)用计算器算一遍,与公式结果比对,写出这三个期望值。
  • 总量法:SUM 结果与另一条独立路径(如数据透视表汇总)比对,写出两边应有的合计数。
  • 边界法:把查找区域最后一行改成空值/新增一行测试数据,确认公式仍取到正确结果。

输出格式#

严格按这个结构输出,顺序不变:

## 公式排错

**位置**:Sheet1!F2
**原公式**:=……
**现象**:#N/A(期望 1280,实际 #N/A)
**根因**:查找值是文本「1001」,源表 A 列是数字 1001,两边类型不一致

### 修正公式
=VLOOKUP(--$A2,数据!$A$2:$D$1000,4,FALSE)

### 拆解
- `--$A2`:把文本型编号转成数字,解决类型不一致
- `数据!$A$2:$D$1000`:补工作表名并锁定区域,下拉不会偏移
- `4`:取第 4 列(金额)
- `FALSE`:精确匹配,避免取到近似值

### 验证
- 第 2 行手工核对:编号 1001 对应金额应为 1280
- 第 500 行手工核对:编号 1500 对应金额应为 960
- 全表 `SUM(F2:F1000)` 应等于 1,284,300(与数据透视表合计一致)

### 同类坑
- 源表 A 列若还有文本型编号,同样会返回 #N/A,建议整列先统一格式

多个问题并存时,按「会导致报错 → 会导致算错 → 只是不好看」的顺序排列,一个问题一个小节。最多输出 3 个问题,多的归到「其余待查」一句话带过。

必须遵守#

  • 不改业务口径。用户算的是含税价,就不许顺手改成不含税;口径有问题单独用一段提示,不动公式。
  • 不编造函数和参数。不确定某函数是否存在或参数顺序,就说「该函数在你的版本可能不可用」,给兼容写法。
  • 不猜列名。用户没说列名时用 <金额列> 这样的占位符并在文中标注「请替换为实际列名」,不许自己编一个看起来像真的列名。
  • 不用 IFERROR 遮错。兜底值只能是 "待核" 这类显式标记,不许写 0 或 ""。
  • 不给空话。禁止出现「检查一下数据格式」「注意数据准确性」「建议优化公式」这类没有动作的句子;每条建议必须落到「改哪个单元格、改成什么」。
  • 数字要说来源。期望值、合计数只能是用户给的或明确标注为「示例值」,不许假装是真实数据。
  • 涉及用户表里的真实数值、编号时,输出里做脱敏(编号写 1001 这类示意值,或写「第 X 行」),不复述敏感明细。

用途与依赖

作者没写,这些是平台读文件后整理的,以文件为准。

使用示例

请求:我的 VLOOKUP 一直报 #N/A,公式是 =VLOOKUP(A2,数据!A:D,4,FALSE),A2 里是编号 1001,源表里明明有这个编号。

预期

技能会先确认现象(报错代码 #N/A)、数据结构(A 列编号是文本还是数字、源表列范围与行数)和软件版本,然后判断根因,例如查找值是文本「1001」而源表 A 列是数字 1001,两边类型不一致。随后按固定结构输出:位置、原公式、现象、根因;修正公式如 =VLOOKUP(--$A2,数据!$A$2:$D$1000,4,FALSE);逐段拆解(--$A2 做类型转换、补工作表名并锁定区域、第 4 列取金额、FALSE 精确匹配);验证方法(挑第一行、中间行、最后一行手工核对期望值,并用 SUM 与数据透视表合计比对);同类坑提示(源表若还有文本型编号同样会返回 #N/A,建议整列统一格式)。若版本不确定,会同时给出 XLOOKUP 主推写法与 INDEX+MATCH 兼容写法。

适用场景
  • 单元格显示 #REF!、#VALUE!、#N/A、#DIV/0!、#NAME?、#NUM!、#SPILL! 等错误值
  • 公式不报错但结果不对,如求和偏小、计数漏行、平均值异常、结果恒为 0
  • 下拉填充后每行结果都一样,或引用区域随拖动偏移
  • VLOOKUP/XLOOKUP 匹配不上、返回 #N/A
  • SUMIF/COUNTIF 条件求和或计数漏数
  • 公式从其他工作表或文件复制过来后失效
  • 需要一条可直接粘贴的修正公式并知道如何验证
  • 需要区分 Microsoft 365、Excel 2019 及更早版本、WPS 的函数兼容写法
输入
  • 原公式整段(从 = 开始,含所在单元格地址)
  • 现象:报错代码,或实际结果与期望结果两个数
  • 数据结构:公式引用到的列名、行号范围、大概行数、关键列是文本还是数字
  • 软件版本:Microsoft 365 / Excel 2019 及更早 / WPS
  • (可选)用户明确要求时,说明是否需要把排错记录整理成文件
输出
  • 按固定结构输出的公式排错报告:位置、原公式、现象、根因
  • 整段可直接粘贴的修正公式(必要时给主推版与兼容版两条)
  • 修正公式的逐段拆解说明
  • 可执行的验证方法(对照法、总量法、边界法)及期望值
  • 同类坑提示
  • 多个问题并存时按严重程度排列,最多输出 3 个问题,其余归入「其余待查」
  • 用户明确要求时,整理成排错记录文件
运行环境
未说明
依赖
无