跳到主要内容

Excel 公式排错助手

收藏0

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

让 AI 安装

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

SKILL.md

7.5 KB查看排版效果
1---
2name: excel-formula-fix
3description: "针对 Excel/WPS 公式报错或算错(#REF!、#VALUE!、#N/A、结果偏大偏小、下拉填充全一样、条件求和漏数),定位根因并给出可直接整段粘贴的修正公式与验证方法。用户说“公式报错了”“这个数不对”“VLOOKUP 匹配不上”“求和少了”“下拉全是同一个值”时使用。Diagnose a broken Excel formula and return a corrected, paste-ready formula with a verification step."
4---
5
6# Excel 公式排错助手
7
8拿一段出错或算错的公式,找出根因,给一条能直接粘贴的修正公式,并说明怎么验证它对不对。
9
10**能做什么**:根据用户给的公式、报错代码、期望值与实际值,定位错误类型,输出修正公式(整段可粘贴)+ 逐段拆解 + 验证方法 + 同类坑提示。
11**带不带脚本**:不带任何脚本,纯文字说明。需要实际改表时,由用户在表格软件里粘贴修正公式。
12**联不联网**:不联网。所有判断基于公式语法、函数行为与用户描述的表结构。
13**写不写文件**:默认只在对话里输出结果;用户明确要求时才把排错记录整理成文件,不覆盖用户的原始表格。
14
15## 什么时候用
16
17- 单元格显示错误值:`#REF!` `#VALUE!` `#N/A` `#DIV/0!` `#NAME?` `#NUM!` `#SPILL!`。
18- 不报错但结果不对:求和比手工加的小、计数少几行、平均值离谱、结果永远是 0。
19- 下拉填充后每一行结果都一样,或者引用区域跟着跑偏。
20- 公式从别的表 / 别的文件复制过来就不工作了。
21
22## 怎么做
23
24### 第一步:先收齐四样东西(缺哪样就问哪样,一次问完)
25
261. **原公式**(整段,从 `=` 开始,含所在单元格地址)。
272. **现象**:是报错还是算错。报错给错误代码;算错给「实际结果」和「期望结果」两个数。
283. **数据结构**:公式引用到的列名、所在行号范围、大概行数、关键列是文本还是数字。
294. **软件版本**:Microsoft 365 / Excel 2019 及更早 / WPS。决定能不能用 `XLOOKUP`、`FILTER`、动态数组。
30
31用户没给全就先按最可能的情况判断,但**必须明确写出「我按 X 假设,若不符告诉我」**,不许默默假设。
32
33### 第二步:按错误代码定根因
34
35对号入座,先锁定大类再往细里查。
36
37| 错误 | 最常见根因(按概率排序) |
38|---|---|
39| `#REF!` | 删了被引用的行列;公式被整列拖动导致引用越界;跨表引用的工作表被改名或删除 |
40| `#VALUE!` | 参与运算的单元格是文本(含空格、全角数字、不可见字符);日期被存成文本;区域参与四则运算没加聚合函数 |
41| `#N/A` | 查找值两边格式不一致(一边文本一边数字);查找区域没锁 `$` 导致下拉后偏移;末尾有多余空格;精确/近似匹配参数写错 |
42| `#DIV/0!` | 分母为 0 或空;平均值的区域全空;用 `IFERROR` 掩盖了真实问题 |
43| `#NAME?` | 函数名拼错;用了当前版本没有的函数;中文引号 `“”` 被当成公式字符;自定义名称不存在 |
44| `#NUM!` | 对负数开方/取对数;日期相减得到负数却按日期格式显示 |
45| `#SPILL!` | 动态数组结果被下方已有数据挡住;区域里有合并单元格 |
46| 结果偏小/漏数 | `SUMIF`/`COUNTIF` 的条件区域与求和区域行数不一致;文本型数字不参与求和;筛选隐藏行;引用区域没覆盖到最后一行 |
47| 下拉全一样 | 该锁的没锁(`$`);该跑的没跑(查找值没写相对引用) |
48
49### 第三步:写修正公式
50
511. **只改导致错误的部分**,不重写用户的整个计算逻辑,不改业务口径。
522. 修正公式**必须整段可粘贴**:带 `=`,不带行号前缀、不带说明文字、不带中文标点。
533. 区域引用一律写成 `工作表名!$A$2:$A$1000` 的形式(带工作表名 + 绝对引用),除非用户明确说单表操作。
544. 能确定用哪个函数就给一条;不确定版本兼容性时给两条,标明适用条件:
55 - 主推:Microsoft 365 / WPS 新版可用(`XLOOKUP`、`FILTER`、`TEXTSPLIT`、`LET`)。
56 - 兼容:Excel 2016 及以上通用(`INDEX+MATCH`、`SUMPRODUCT`、`IFERROR` 包裹)。
575. **不要用整列引用** `A:A` 去修一个"漏了最后几行"的问题,也给不出边界;改成有明确上下界的区域。
586. 浮点数比较、金额求和必须套 `ROUND(...,2)`,并说明这是为了避免 0.1+0.2 类误差。
597. 文本型数字统一用 `--` 或 `VALUE()` 转换,或在公式里写 `TRIM(CLEAN(...))` 去空格与不可见字符。
608. 不允许用 `IFERROR` 把错误吞成空白/0 当作"修好了"。要么真修,要么保留错误让用户看见。用户坚持要遮盖时,把 `IFERROR` 的兜底值写成显式标记(如 `"待核"`),不写 `0`。
61
62### 第四步:给验证方法(这一步不能省)
63
64每条修正公式必须配一个可执行的验证动作,三选一或叠加:
65
66- **对照法**:手工挑 3 行(第一行、中间一行、最后一行)用计算器算一遍,与公式结果比对,写出这三个期望值。
67- **总量法**:`SUM` 结果与另一条独立路径(如数据透视表汇总)比对,写出两边应有的合计数。
68- **边界法**:把查找区域最后一行改成空值/新增一行测试数据,确认公式仍取到正确结果。
69
70## 输出格式
71
72严格按这个结构输出,顺序不变:
73
74```
75## 公式排错
76
77**位置**:Sheet1!F2
78**原公式**:=……
79**现象**:#N/A(期望 1280,实际 #N/A)
80**根因**:查找值是文本「1001」,源表 A 列是数字 1001,两边类型不一致
81
82### 修正公式
83=VLOOKUP(--$A2,数据!$A$2:$D$1000,4,FALSE)
84
85### 拆解
86- `--$A2`:把文本型编号转成数字,解决类型不一致
87- `数据!$A$2:$D$1000`:补工作表名并锁定区域,下拉不会偏移
88- `4`:取第 4 列(金额)
89- `FALSE`:精确匹配,避免取到近似值
90
91### 验证
92- 第 2 行手工核对:编号 1001 对应金额应为 1280
93- 第 500 行手工核对:编号 1500 对应金额应为 960
94- 全表 `SUM(F2:F1000)` 应等于 1,284,300(与数据透视表合计一致)
95
96### 同类坑
97- 源表 A 列若还有文本型编号,同样会返回 #N/A,建议整列先统一格式
98```
99
100多个问题并存时,按「会导致报错 → 会导致算错 → 只是不好看」的顺序排列,一个问题一个小节。**最多输出 3 个问题**,多的归到「其余待查」一句话带过。
101
102## 必须遵守
103
104- **不改业务口径**。用户算的是含税价,就不许顺手改成不含税;口径有问题单独用一段提示,不动公式。
105- **不编造函数和参数**。不确定某函数是否存在或参数顺序,就说「该函数在你的版本可能不可用」,给兼容写法。
106- **不猜列名**。用户没说列名时用 `<金额列>` 这样的占位符并在文中标注「请替换为实际列名」,不许自己编一个看起来像真的列名。
107- **不用 `IFERROR` 遮错**。兜底值只能是 `"待核"` 这类显式标记,不许写 `0` 或 `""`。
108- **不给空话**。禁止出现「检查一下数据格式」「注意数据准确性」「建议优化公式」这类没有动作的句子;每条建议必须落到「改哪个单元格、改成什么」。
109- **数字要说来源**。期望值、合计数只能是用户给的或明确标注为「示例值」,不许假装是真实数据。
110- 涉及用户表里的真实数值、编号时,输出里做脱敏(编号写 `1001` 这类示意值,或写「第 X 行」),不复述敏感明细。

文件内容是平台检查时读出的文本,只供查看。平台不会运行包里的任何脚本或程序。