把一份 3000 行的 Excel 丢给 DeepSeek,说一句”帮我清洗一下”,然后拿回一张看起来更整齐的表——这件事很多人已经做过了。做完之后,他们通常会有两种反应:一种是觉得”AI 真神”;另一种是过几天在对账时发现某个数字对不上,回头查了半天,才发现当时那份 Excel 被”顺手改好”了,但没人知道改了什么、为什么改、改得对不对。
这两种反应,前者是运气,后者是必然。区别只在于那份表里有没有一个”看着奇怪但其实是对的”的值。
这篇文章不讲”DeepSeek 可以帮你做 Excel”这种谁都会说的话。它讲三件具体的事:用自然语言直接改单元格、用 AI 做带”后悔药”的数据清洗、让表格自己”找茬写报告”。每件事都按同一套结构拆开——能力边界、正确用法、失败兜底。这三件套不是为了让你更放心地用 Excel + AI,恰恰相反,它是为了让你更不放心:知道它在哪儿会出错,你才知道该在哪儿停下来。
整篇文章会反复回到一条主线:AI 在 Excel 上的正确位置是”读和判”,不是”写”。让它读你的 Excel、判断异常、给出建议,最后一步由你在 Excel 里亲手执行,出错概率最低。反过来,让它直接输出一张”改好的表”,你几乎没有办法验证它到底动了哪一格。后面每一节,都是这条主线的展开。
先把立场说清楚:为什么”让 AI 直接改表”是最危险的一种用法
在进入具体操作前,有必要先把一个反直觉的判断摆出来。
大多数人用 DeepSeek 处理 Excel 的方式是这样的:把表格复制成 CSV 或 Markdown,贴进对话框,配一句”帮我整理成规范格式”,然后把返回的整张表复制回 Excel。这套流程之所以流行,是因为它看起来最省事——一次对话,一张新表,中间没有摩擦。
但它恰恰是最难验证的一种。原因有三层。
表格是”有结构的状态”,而对话是”无状态的文本”
Excel 里的每一格都不只是”一个值”,它带着格式、公式、批注、数据验证、条件格式、合并状态、隐藏行、引用关系。当你把它转成 CSV 或粘贴进对话框时,这些全部丢失,只剩下一堆用逗号或竖线隔开的字符。DeepSeek 拿到的就是这堆字符,它不知道这一格原来是日期格式还是文本,也不知道那一格被别的 sheet 用公式引用了。
所以它返回给你的”改好的表”,本质上是从一份降维后的副本重新生成的一份新表。你再把它粘回 Excel,等于用一份新表覆盖了原来那份有结构、有依赖、有历史的状态。中间损失的、被误判的、被”顺手规范化”的东西,都在这一步里悄无声息地发生了。
这不是 DeepSeek 的缺陷,这是所有大语言模型处理表格时的结构性限制。它擅长的是理解语言、发现模式、解释原因;它不擅长的是”精确地在第 1947 行的第 G 列做一处最小改动,别的都不碰”。Excel 干活靠的是后者。
整表输出会让”改了什么”变得不可见
假设你让它把日期统一成 YYYY-MM-DD。它返回的表里,大部分行看起来一模一样,只有少数几行变了。问题是——你怎么知道它只改了日期列?它会不会顺手把某个”看起来像日期”的编号也改了?会不会把 2024-13-05 这种明显错误的日期”修正”成了 2024-12-05?会不会把一行本来是对的记录删掉,因为它觉得重复?
你唯一的验证方式,是拿原表和返回表逐格比对。3000 行的表,人工比对是做不到的;写脚本比对,那你已经不需要它返回整表了,你只需要它告诉你”改哪几格”。
这就是本篇文章最核心的一条工程原则:让 AI 只输出改动清单,不要输出整表。改动清单的可验证性远高于整表。一张表里改了三处,人扫三行;改了一百处,人扫一百行,但至少知道该扫哪里。整表返回,你连”该扫哪里”都不知道。
大模型在 Excel 上的可靠性,与表格规模成反比
一句话让 Excel 表看起来变整齐,在小表上成立,在大表上崩塌。原因不是模型不够强,而是注意力是有预算的。当表格只有 20 行时,它能完整看到每一行;当表格有 2000 行时,它只能看到被截断、被摘要、被压缩后的版本,远处的内容它根本没”看全”,却仍然会自信地输出一整张表——那些没看全的部分,它按”看起来应该是什么”补上了。
所以下面的所有方法,都建立在一个前提上:不要让 AI 处理它看不全的东西,也不要让它输出它无法保证的东西。读、判、出清单,是它最擅长的三件事,也是它出错时你最容易发现的三件事。
正确的位置,是一张流程图而不是一句口号
“AI 读和判,人写”如果只是口号,落地时就会走样。它可以被拆成一条具体的分工链:
- AI 侧:读表 → 识别模式 → 判异常 → 出改动清单或问题清单 → 说明理由与复核方法。
- 人侧:审清单 → 判断哪些改动该做、哪些不该做 → 在 Excel 里执行(粘贴、公式、筛选、Power Query)→ 留痕。
- Excel 侧:保留原表、保留历史、保留公式、保留结构,它才是那个”有状态”的载体。
后面三个场景,本质上都是在这条分工链上的具体落点。场景一是”读+出清单+人执行”,场景二是”读+判+出预览+人确认”,场景三是把”写”的部分下放到 Excel 内部(报告本身就是一份新表)。
准备篇:动手之前,先把 DeepSeek 的输入喂对
很多失败案例不是模型能力不够,而是输入方式不对。Excel 进 DeepSeek 的路有三条,适用场景完全不同,选错路,后面的提示词写得再漂亮也白搭。
路径一:直接粘贴(适合 30 行以内的小表)
从 Excel 选中区域复制,直接粘进对话框。DeepSeek 会把它识别成制表符分隔的文本,行列结构基本能保留。这是最快的方式,但只适合小表:超过 30–50 行,粘贴的内容会变长,模型对中后段的关注会下降,且你很难判断它是否完整读到了末尾。
用这条路径时,粘贴之后加一句”先复述你读到的行数和列数,以及表头”,是一个几乎零成本的校验。它答不上来或者答错,说明它没读全,直接停下,换路径。
路径二:上传 CSV 或 XLSX(适合中等规模,DeepSeek 网页/App 支持文件上传)
把 Excel 另存为 CSV(UTF-8 编码,避免乱码),上传给 DeepSeek。这条路径的好处是整个文件都在它的上下文里,它可以读全表的每一行——但仍然要注意两点:一是 CSV 已经丢失了格式、公式、合并、多 sheet 信息;二是它读到的”行号”和你 Excel 里看到的行号可能因为表头、空行而差一行,所以务必要求它用”第几条数据”而不是”Excel 第几行”来定位,或者干脆在数据里加一列自增 ID。
路径三:分块喂(适合上千行的大表)
大表一律分块。按业务维度切(按月、按部门、按区域),每块单独提问,然后把回答汇总。分块的好处是可靠性高,坏处是跨块的问题会被切断——比如同一个客户在 1 月和 3 月的数据分在不同块里,重复检测就失效了。所以分块之前要问自己一句:这次要查的问题,有没有跨块依赖?有的话,先把用于判断的”键”单独抽出来做一个去重校验。
分块还有一个不那么明显的收益:它让错误变得局部可控。一次处理 5000 行,出了错你得重做全部;分成 10 块、每块 500 行,某一块出问题,重做一块就行。从工程角度看,这其实就是”把一次大事务拆成十次小事务”,任何一个熟悉数据的人都会觉得这是常识,但在”扔给 AI 一句话”式的用法里,这个常识经常被忘掉。
一个细节:给它加一列”行号锚点”
不管走哪条路径,我都会在第一列插一个自增编号(1、2、3……),并且在提示词里明确说”用第一列编号定位,不要用 Excel 行号”。原因很实在:CSV 导入后,DeepSeek 数出来的行号和你在 Excel 左侧看到的行号不一定一致,一旦差了一行,你按它给的行号去改,就会改错格——这种错误最隐蔽,因为改动本身看起来是对的,只是落在了相邻的一行上。
更具体地说,行号错位通常来自四个源头:Excel 顶部有标题行或说明行(第 1 行是”XX 公司 2024 年销售台账”,第 2 行才是表头);表中间插入过小计行;导出时带了空行;冻结窗格让人误以为第 1 行就是第一条数据。任何一种,都会让”它说的第 47 行”和你看到的第 47 行不是同一条记录。加了编号锚点之后,你在 Excel 里用”筛选”或”查找”定位编号 1047,就不存在歧义。
锚点列的三个加分做法
编号锚点本身很简单,但稍微做细一点,能用得更顺。第一,把锚点列设成文本格式而不是数字,避免 Excel 自动把它当数值参与计算或被排序打乱后你不知道原始顺序。第二,给锚点列加一个显眼的列名,比如”编号(勿改)”,所有提示词里都这样称呼它,减少模型随手”帮他补全编号”的可能。第三,清洗前后锚点保持不变,这样纵向对比两张表时,锚点就是唯一可靠的连接键。
还有一个容易忽略的细节:如果表是从系统导出的、本身就带业务主键(订单号、客户编号),那原则上优先用业务主键做锚点,自增编号只作为辅助。原因是业务主键在业务系统里有唯一性约束,而自增编号只是你临时加的,出了 Excel 就没意义了。
锚点在撤回时的作用
锚点还有一个隐藏用途:它让”回滚”变得可以按行进行。如果你发现某几行被改错了,而其他行是对的,你不需要整表回滚,只需要按锚点编号找到那几行,从原表副本里把对应行的值拿回来。没有锚点的话,你只能在两份看起来差不多的表里肉眼比对,900 行里找 3 行,几乎不可能。
三条路径的取舍
| 路径 | 适用规模 | 保留结构 | 可靠性 | 主要风险 | 推荐场景 |
|---|---|---|---|---|---|
| 直接粘贴 | 30 行以内 | 仅单元格值 | 高(规模小时) | 漏读尾部、格式全丢 | 快速抽查、样例试跑 |
| 上传 CSV/XLSX | 几十到数百行 | 值 + 简单表头 | 中高 | 行号错位、多 sheet 丢失 | 清洗预览、找茬报告 |
| 分块喂 | 上千行 | 仅块内值 | 高(块内)/ 低(跨块) | 跨块关联断裂 | 大批量异常扫描 |
注意表格最后一列的取舍逻辑:清洗预览和找茬报告最怕行号错位,所以宁可分块也不要赌它读全;跨 sheet 类问题最怕结构丢失,所以这类问题根本不该交给 Excel 聊天式处理,应该退回 Excel 本身用 VLOOKUP / XLOOKUP 或 Power Query 关联。
场景一:自然语言直接改单元格——把”改格式”变成可审核的改动清单
“自然语言直接改单元格”这句话听起来很美好:你说”把这一列日期统一成 2024-01-05 这种格式”,它就给你改好。可行,但前提是你把它拆成两步——先出预览,再执行。跳过预览这一步,就等于让一个人闭着眼睛在你表里改了一百格,然后告诉你”改好了”。
能做:五类”规则明确、结果确定”的批量改写
DeepSeek 在 Excel 上真正稳的活,是那些规则一句话能说清、结果是唯一且可验证的批量改写。这类活有五个典型类别:
- 统一日期格式:把 2024/1/5、2024.01.05、2024年1月5日、20240105 全部统一成 2024-01-05。
- 手机号脱敏:13812345678 → 138****5678,保留前三位与后四位。
- 去空格:去掉首尾空格、单元格中间的多余空格、从网页复制带来的全角空格与不间断空格( )。
- 大小写统一:邮箱统一小写、产品编码统一大写、英文名首字母大写。
- 部门名称标准化:把”销售一部、销售1部、销售一部(华东)、销售部一部”统一成”销售一部”。
这五类的共同点是:人工写规则几乎是一对一的映射,且不需要理解单元格之间的依赖关系。它们只关心”这一格的值长什么样”,不关心”这一格被谁引用”。这正好落在 DeepSeek 的能力圈里。
去空格这一项,值得单独说
看起来最无聊的”去空格”,实际上是 Excel 场景里价值最高的清洗之一。原因很隐蔽:从系统导出、从网页复制、从别人邮件里的表复制进来的数据,经常混着三种看不见的字符——普通空格、全角空格( )、不间断空格( )。它们肉眼看起来一模一样,但会让 VLOOKUP 匹配失败、让 COUNTIF 数不出来、让透视表多出一行”看起来重复”的分类。
三种空格的区别与清理方法
普通空格(ASCII 32)用 TRIM 可以清掉首尾;全角空格(U+3000)TRIM 清不掉,需要 SUBSTITUTE 配合或者 CLEAN;不间断空格(U+00A0)也是 TRIM 的死角,经常在从网页复制时混入。这三种混在一起的后果是:一列”看起来都在”的客户名,实际上有 17 个版本——每个版本只差一个看不见的字符。
让 DeepSeek 对一列做”去空格预览”,它通常能识别出哪些行是”看起来一样但实际不同”的,这是纯人工难以发现的。但一定要提醒它:把全角空格也视为需要清理的字符,并把清理前后的长度差异一并列出,这样你才能确认它清理的是空格而不是别的内容。预览里”原值长度 8、新值长度 6″这样的信息,看起来啰嗦,实际上是你唯一能验证”它确实只删了空格”的证据。
为什么”看起来重复”比”真的重复”更麻烦
真的重复很好处理,删掉就行。麻烦的是”看起来重复”——透视表里出现两个”阿里巴巴”,你以为是两家公司,实际上是同一个客户名带了个尾随空格。这种问题的破坏力在于,它会让你在做业务判断时得出错误结论:你以为客户 A 的订单分散在两个账户下,实际上是同一个账户被拆成了两行。等你发现问题时,基于这份数据做的分析、汇报、决策都已经出去了。
所以去空格这一项的正确用法,不是”顺手清一下”,而是先做”唯一值体检”:把该列所有唯一值列出来,人工扫一眼有没有”看起来一样”的两项。这个步骤连 AI 都不用,Excel 的”删除重复项”预览功能就能做到。但 AI 能做的是更进一步的事——它可以说出”第 12 行和第 87 行的客户名看起来一样,但第 87 行末尾多一个字符”,这是删除重复项功能显示不出来的。
关键:改之前必须先让它输出”改动预览”
这是整个场景一的核心动作。无论改什么,都要求它输出一张三列对照表:原值 / 新值 / 行号(编号)。三列对照的意义在于,你能在一眼之内判断”这个改动对不对”,而不需要打开 Excel 逐格核对。
更严谨一点,预览表应该是五列:编号、字段名、原值、新值、改动原因。第五列是给”以后复盘”用的——三个月后有人问”这一格为什么被改过”,你能回答。
预览阶段,人应该做的事是扫而不是读:只看那些”新值看起来有点怪”的行,或者”原值和新值差异很大”的行。绝大多数正常改动会呈现为高度一致的模式(比如”2024/3/7 → 2024-03-07″),扫一眼就能跳过;那些偏离模式的行,才是需要停下来的地方。
不能做:四类会让它”改一处、崩一片”的情况
下面这四类,是我在实践中最常看到翻车的地方。它们有一个共同点:AI 看不到单元格之间的依赖关系。换个说法:它们都属于”格的语义超出了格的内容”——值的意义不只在它自己身上,还在它和其他格的关系里。而 AI 只能看到格,看不到关系。
合并单元格
合并单元格在 CSV 里是”坍塌”的——合并区域的左上角有值,其余位置看起是空的。DeepSeek 不认识”这是合并的”,它只看到一片空格,于是很可能把这些空格”补上”(填充空值)、或者把它们当作缺失数据处理掉。当你把结果粘回 Excel,原来的合并区域会被打散成一片散落的单格值,格式全毁。
遇到合并单元格,正确做法是先在 Excel 里取消合并、并填充值(Ctrl+G 定位空值 → 输入 =上方单元格 → Ctrl+Enter),再交给 AI。这一步在 Excel 里做,比让 AI 猜要可靠一百倍。
多表关联
“把订单表的客户名称按客户主表统一一下”——这种任务看起来很简单,实际上需要跨两张表做键匹配。AI 只能看到你粘贴给它的那部分,要么两张表都贴进去(上下文急剧膨胀、它会漏),要么只贴一张(它无从判断该统一成什么)。更糟的是,它可能”猜”某个名称应该对应哪个主表客户,而猜错了你根本看不出来,因为改完的名字本身是合法的、存在过的客户名。
多表关联应该退回 Excel 用 XLOOKUP 做,或者用 Power Query 合并查询。AI 可以做的是帮你生成那张”名称映射表”(列出所有”看起来一样但写法不同”的名称,给出建议映射),映射表由人确认后,再在 Excel 里执行。
跨 sheet 引用
DeepSeek 只能看到你给它的那一个 sheet。它不知道这个值被别的 sheet 用公式引用着。改了一个”看起来无害”的部门名称,月底汇总报表里对应的公式就会全部返回 #N/A,而这个错误往往要等到报表打开时才会被发现。
公式依赖链
最危险的一类。单元格 B 是公式,引用了 A;C 又引用了 B。AI 看到的只是”数值”,它不知道 B 是算出来的。如果它”好心”把 B 的值改成它认为更合理的一个数,那这个改动其实是把公式覆盖成了常量——表面上看起来没变,实际上表格已经失去了自动更新能力。更隐蔽的是:它有时会把 A 改了,B、C 因为公式自动重算跟着变,你在 Excel 里看到的是一片数值变化,却找不到原因。
一个真实场景:单价表里的”随手一改”
有一张价格表,C 列是单价,D 列是”折扣率”,E 列是”折后价”(公式 =C*D)。有人让 AI 做一件事:”把单价里带小数的都取整”。AI 返回的清单里,有一行是”C 列 12.8 改为 13″。看起来完全合理。但 D 列是”折扣率”,E 列的公式引用的是 C 列,C 一旦从 12.8 变成 13,整张表的折后价都跟着变了——而改动清单里只写了”改了一处”。等你发现报价和系统对不上时,已经过去了两个星期。
这件事说明了一点:受影响的范围不等于”改动清单”的范围。改动清单只说”我改了哪几格”,不说”哪几格因为这个改动而变了”。后者只有 Excel 自己能算。所以判断一个列能不能交给 AI 改,有一个非常直接的自检动作:在 Excel 里选中该列,按 Ctrl+[ 追踪引用单元格,看它有没有被别的地方引用。有没有箭头的区别,就是能不能交出去的区别。
公式列识别技巧:先看开头是不是等号
还有一个更低成本的做法:让它先输出”哪些列是以等号开头的”,作为体检的一部分。在提示词里加一句”如果某列的值以 = 开头,视为公式列,不要改动”,能挡住大部分直接破坏公式的情况——但挡不住”C 列是输入、E 列是公式引用 C 列”这种间接依赖。所以这条只能算第一层防护,第二层仍然是”带回原表用差异公式核对”。
一张对照表:哪些活该交给 AI,哪些活必须留在 Excel
| 操作类型 | AI 可行性 | 为什么 | 正确做法 |
|---|---|---|---|
| 统一日期格式 | 高 | 规则一对一映射,不涉依赖 | AI 出预览清单,人粘贴 |
| 手机号 / 身份证脱敏 | 高 | 纯字符串规则,可逐格验证 | AI 出预览清单,人粘贴 |
| 去空格 / 全角半角调整 | 高 | 字符级清理,结果确定 | AI 出预览清单,人执行 |
| 大小写、部门名称标准化 | 中高 | 需要映射表,映射可能歧义 | 先出映射表,人确认后再改 |
| 合并单元格内的值 | 极低 | CSV 中合并已坍塌 | 先在 Excel 取消合并并填充 |
| 多表关联后的统一 | 低 | 跨表键无法同时看全 | Excel XLOOKUP / Power Query |
| 跨 sheet 引用值修改 | 极低 | 看不到其他 sheet | Excel 内查找引用关系再改 |
| 公式单元格的值修改 | 禁止 | 会把公式覆盖成常量 | 只改输入列,不改计算列 |
| 整表重排、增加列 | 中 | 结构变化大,难以核对 | 小表可用,大表退回 Excel |
这张表建议你收藏。它的左半部分是可以放心交给 AI 的”甜点区”,右半部分是需要退回 Excel 的”雷区”。判断规则很简单:改动是否只依赖本格的值?是,交给 AI;否,留在 Excel。
兜底:三种几乎零成本的保险
即便只在甜点区里干活,也要上保险。三道保险,成本都很低。
保险一:改之前另存副本,并带上日期与版本号
这不是形式主义。命名建议为”销售台账_2024Q1_原始_20241105.xlsx”,并把它设为只读(右键属性 → 只读)。一旦发生问题,这份副本就是你的时间机器。更严格的做法是把副本放进一个单独的文件夹,命名为”00_原始数据”,永远不在里面直接编辑。
保险二:要求”只输出改动清单,不要输出整表”
这句话应该出现在几乎每一个 Excel 相关的提示词里。原因已经说过:整表输出的可验证性几乎为零,而改动清单可以逐行核对。而且它在工程上还有一个好处——改动清单几乎总是很小,小到可以人工看完。
如果某一次它给出的改动清单有 2000 行,那说明这次改动本质上不是”修补”,而是”重做”。这时候应该停下来重新想:是不是我把它当成了一个数据管道?如果是,那就该用 Power Query,而不是 DeepSeek。
保险三:用 Excel 公式做”改动差异”自动核对
把原表放在 Sheet1,改完的表放在 Sheet2,然后在一个空 sheet 里写一个简单的比对公式:=IF(Sheet1!A1=Sheet2!A1,"","差异"),整表拉一下,筛选出”差异”就能看到所有被改动的格子。这一步能把”AI 说改了三处、实际改了三十处”这种问题在十秒内暴露出来。
这三种保险的本质是同一个:让原状态可恢复、让改动可穷举、让差异可自动发现。
可复制模板一:改动预览提示词
下面是场景一的通用提示词。它的设计要点是:先让它复述理解、再出预览、明确禁止输出整表、要求给出可执行的 Excel 操作建议。
你是我的 Excel 数据修订助手。我会给你一张表格(CSV 格式,第一列是编号锚点)。
【任务】
按下面规则批量修订指定列,但**不要输出修订后的整张表**。
【修订规则】
1. 日期列(D 列):统一为 YYYY-MM-DD 格式。
- 能识别的写法:2024/1/5、2024.01.05、2024年1月5日、20240105
- 无法识别或语义上不可能的日期(如 2024-13-05、2024-02-30),**不要修正**,
放进"无法自动处理"清单,由我判断。
2. 手机号列(F 列):脱敏为 前3位 + **** + 后4位。
- 非 11 位或含非数字字符的,标记为"格式异常",不改动。
3. 部门列(H 列):按下述映射统一。映射外的值一律不改动、只列出。
销售1部 / 销售一部(华东)/ 销售部一部 → 销售一部
销售2部 / 销售二部(华南) → 销售二部
4. 所有文本列:去掉首尾空格、把全角空格( )和 视为空格一并清理。
【输出格式】
第一部分:你读到的表头、总行数、各列识别出的数据类型(一句话即可)。
第二部分:改动清单表,列如下——
编号 | 列名 | 原值 | 新值 | 改动原因(不超过 15 字)
第三部分:无法自动处理的条目,列如下——
编号 | 列名 | 原值 | 为什么不能自动改
第四部分:统计——本次共改动几处、涉及几个编号、有无同一格被多条规则命中。
【硬性约束】
- 不输出整表。不输出未改动的行。
- 不修改公式列(若某列内容是 "=" 开头,跳过并在第四部分说明)。
- 不确定的一律不改,放进第三部分。
- 如果规则之间存在冲突(如同一格同时被规则 3 和规则 4 命中),先不动,放第三部分。
表数据如下:
(粘贴 CSV)
这个模板里有几个细节值得说明。第一,”无法识别就不要修正”这一条极为重要——AI 最大的破坏力来自”它觉得它知道正确答案”,把边界说死是防破坏的第一道闸。第二,”规则冲突先不动”针对的是现实里常见的多规则重叠,比如一个部门名既有错误写法又有全角空格,两条规则命中同一格,不明确说的话它可能只执行其中一条。第三,”不修改公式列”是给场景一里的公式依赖链上的锁。
第三部分的”无法自动处理清单”往往是整份输出里最有价值的部分。它告诉你表里哪些地方”它看不懂”,而看不懂的地方,恰恰是最需要人亲自看的地方。
场景二:AI 清洗预览带”后悔药”——把”一键清洗”改造成可回滚的流水线
如果你只从这篇文章里带走一句话,我希望是这句:“一键清洗”是数据工作里最危险的功能。它危险不是因为技术不行,恰恰因为它技术上”看起来太行了”——一键按下,空值填了、重复删了、格式齐了,表格漂亮得像新买的。但漂亮的代价是:你不知道它动了哪里。
这一节讲的,是把”一键清洗”拆解成一条可回滚、可解释、可逐步确认的流水线。
“后悔药”的工程含义:可回滚,不是”可以撤销一步”
很多人对”后悔药”的理解是”Ctrl+Z”。但 Ctrl+Z 只是一个会话内的堆栈,关闭文件、隔了一天、或者别人接了手,它就没用了。真正能在数据工作里救命的”后悔药”,是可回滚:任何时候,你能从当前状态倒退到任意一个明确的历史状态,并且知道中间发生了什么。
可回滚在工程上由三层构成,缺一层都不完整。
第一层:原表保留——最古老、最有效的回滚
说它古老,因为它就是”另存副本”。说它有效,因为在所有回滚手段里,它的失败概率最低——它不依赖任何技术,只依赖一条纪律:原始数据永远不被直接编辑。
实践上建议用一个固定的目录结构,比如:
项目名/
├── 00_原始数据/ ← 只读,永远不改,文件名带日期
├── 01_清洗过程/ ← 每一轮清洗一个文件,文件名带轮次
├── 02_中间结果/ ← 清洗完成但未验证的版本
├── 03_终版/ ← 经过复核、可以对外使用的版本
└── 99_留痕/ ← 改动对照表、清洗规则说明、确认记录
这个结构看起来笨重,但它解决了”后悔药”最难的部分:知道该回到哪里。
这一层的本质是”物理隔离”。它把”原始数据”和”加工后的数据”分别放在两个不会互相污染的地方。哪怕你的流水线后面全错了,只要原始数据还在,你都能从零重来一遍——而且这一次,你知道了上次错在哪里。
第二层:改动留痕——old → new 对照表
原表保留解决了”能回去”,但解决不了”知道发生了什么”。这一层就是改动留痕:每一轮清洗,都产出一张对照表,记录”哪一格、原值是什么、新值是什么、为什么改”。
对照表的字段建议固定下来,至少包含:批次号、时间、操作人、编号、字段名、原值、新值、规则编号、规则说明、是否经人工确认、确认人。
为什么字段要这么细
前四项(批次、时间、操作人、编号)解决”定位”;中间四项(字段、原值、新值、规则)解决”复现”;最后两项(确认、确认人)解决”责任”。缺了最后一组,这张表在团队协作里就没有意义——因为它只记录了机器做了什么,没记录人批准了什么。
留痕表应该由谁来写
这是实践里最常被搞混的一点。留痕表不应该由 AI 来维护,至少不应该由它”顺手维护”。原因是,留痕表的价值恰恰在于它是一个”独立于 AI 输出的第三方记录”:AI 说它改了三处,留痕表里记了五处,差的两处就能被发现。如果留痕表也是 AI 生成的,那它和改动清单会天然一致,就失去了交叉验证的意义。
正确做法是:AI 输出改动清单 → 人把清单粘进留痕 sheet → 在 Excel 里执行改动 → 用差异公式回填”实际改动” → 两份对照。这个过程看起来多了一步,但它是唯一能让”AI 说的”和”实际发生的”互相校验的机制。
批次号的编码方式
批次号建议用”动作-日期-序号”三段式,比如 CLEAN-20241105-01。动作前缀取 CLEAN(清洗)、FIX(修正)、DEDUP(去重)、NORM(标准化),一眼就能看出这一批是什么类型的改动。序号从 01 开始,同一天的第二批是 02。这个习惯在半年后回头看时价值巨大——你不需要打开任何一个文件,只看批次号列表就知道这张表经历过什么。
第三层:改动可解释——为什么要这么改
对照表里那一列”规则说明”,就是”可解释”。但真正的可解释,不只是”按规则 3 改了”,而是“为什么规则 3 是对的”。
举个真实的例子:某张订单表的”金额”列,有一部分行的值是”1,234.56″(带逗号的文本),有一部分是 1234.56(数字)。如果清洗规则是”统一为两位小数数字”,那带逗号的那批会被转成数字。这一步本身没错,但可解释的要求是:提前确认”1,234.56″里用的是逗号做千分位,而不是欧式的小数点。如果是欧式格式(1.234,56),转换结果就是错的,而且错得非常隐蔽——1,234.56 转成数字是 1234.56,1.234,56 如果被误当成千分位,会变成 1234.56,看起来一样,但正确值是 1234.56(欧式)还是 1234.56?一旦某行是 1.234(欧式一千二百三十四),转成数字会变成 1.234,差了一千倍。
可解释的含义在这里非常具体:你能说清楚”这一格为什么被改成这个值,依据是什么”。说不清楚,就不该改。
标准流水:七步走完一轮清洗
清洗不是”一次对话”,是七步。很多人失败,是因为直接跳到了第五步(出预览)甚至第六步(应用),跳过了前面的四步。
步骤一:体检
在做任何清洗之前,先让人(或 AI)通读整表,输出一份”体检报告”:有多少行、多少列、每列的空值比例、每列的数据类型是否一致、有没有明显重复、有没有超出合理范围的值。这一步的目标不是”清洗”,是知道这张表有多脏、脏在哪儿。
步骤二:出问题清单
体检之后,把问题按类型归类,形成一个清单。清单里每一项都应该有:问题类型、涉及行数、涉及字段、示例。
步骤三:定规则
针对清单里的每一类问题,定一条明确规则。这一步是人做决定的环节,不是 AI 做决定的环节。AI 可以给建议(”建议把空值填 0″),但规则必须由人拍板,并且写下来。写下来的规则,才是可复现的规则。
定规则的黄金标准是:这句话如果交给一个新同事,他能独立执行,且结果和你想的一样。如果做不到,规则还太模糊。
步骤四:出预览
规则定好之后,让 AI 按规则计算”会改成什么样”,但只出预览,不应用。预览的格式和场景一一样:编号 / 字段 / 原值 / 新值 / 改动原因。
步骤五:确认
人扫预览,重点是扫那些”模式之外”的改动。同时还要做一件事:随机抽 5–10 行,拿原表核对。抽查不是为了发现 AI 错,而是为了验证”你读到的东西和它读到的东西是同一份”——很多失败是输入错位导致的,预览看起来没毛病,但预览本身读错了。
步骤六:应用
确认为准的改动,在 Excel 里执行。执行方式可以是手动粘贴、可以是”查找替换”、可以是 Power Query。但执行的动作发生在 Excel 里,不是在对话里。这一条是整篇文章的主线在清洗环节的落点。
步骤七:留痕
把预览表原样存进 99_留痕 目录,加上批次号与时间。这一步不能省——它就是下次出问题时的”后悔药说明书”。
留痕的颗粒度:按批次还是按格子
留痕的最小单位应该是”格”,不是”批次”。很多团队的做法是”这轮清洗我改了日期列”,这在复盘时几乎无用——你只能知道”日期列被改过”,无法回答”第 1047 行的日期当年为什么改成了这个值”。按格留痕成本高一些,但它的价值在于任何一格都能独立回答”我是怎么来的”。
实际操作里不需要手工逐格录入:把 AI 输出的改动清单整个粘进留痕 sheet,每一行就是一张”格的身份证”,批次号和时间用填充的方式补齐即可。成本大约只比”记一句话”多十秒钟。
留痕该保留多久
建议至少保留到”这张表不再被使用”为止,并且原表副本永不删除。一个现实的经验是:数据问题的平均发现周期远比想象中长——三个月后在报表里发现一个不对的数,半年后被审计问到一笔订单的来源,一年后同事交接时问你”这个客户名为什么改过”,都依赖当年那张留痕表。而留痕表的存储成本几乎为零,删它的唯一理由就是”觉得没用”。
一张流水图说明这七步
体检 → 问题清单 → 定规则 → 出预览 → 确认 → 应用 → 留痕,这七步是一条线性流水。需要强调的一点是,任何一步发现异常,都应该回到上一步,而不是继续往前推。比如出预览时发现某类改动量远超预期,就该回到”定规则”重新调整;确认时发现问题,就该回到”出预览”重新生成。流水是单向的,但纠错是往回走的。
常见脏数据类型与对应处理
下面是实践中出现频率最高的六类脏数据。每一类都有”看起来对”和”实际对”的差别。
| 脏数据类型 | 典型表现 | 错误处理(AI 常犯) | 正确处理 | 为什么 |
|---|---|---|---|---|
| 空值 | 单元格为空 / 空格字符串 | 一律填 0 或填上一行 | 先区分”真无”与”漏填” | 金额空值填 0 会拉低均值、掩盖缺失;”无此字段”填 0 则语义错误 |
| 重复 | 整行相同 / 关键字段相同 | 直接删除重复行 | 先定”重复键”,再出重复组预览 | 同一客户两条订单可能是两笔真实交易;按整行去重 vs 按订单号去重结果完全不同 |
| 格式不一致 | 日期、金额、单位写法混杂 | 统一格式化 | 先判断语义单位,再统一 | 1.234 可能是 1234(千分位)也可能是 1.234(小数),盲转会差千倍 |
| 异常值 | 远超合理区间 | 当错误值修正或剔除 | 只标记,不修改,交人判断 | 大额订单、退货冲销、补录在业务上都可能是”异常但正确” |
| 编码错误 | 乱码、𠮷 变成 ? | 尝试”修复”字符 | 回溯原始文件,重新按 UTF-8 导出 | 编码损失是不可逆的,AI 只能猜,猜错了无法溯源 |
| 全角半角 | ABC 与 ABC、123 与 123 | 无差别转半角 | 区分”该半角的”与”该保留全角的” | 中文语境里全角标点是正常的,无差别转半角会破坏正文 |
空值:最被低估的一类
“区分真无和漏填”这句话需要展开。一张订单表里,某行的”折扣”是空的,可能意味着”这单没有折扣”(真无,填 0 是对的),也可能意味着”这一格忘了填”(漏填,填 0 就掩盖了问题)。两者在 Excel 里长得一模一样,但语义完全不同。
三种”空”其实不是一回事
在 Excel 里,至少有三类情况会被统一显示为”空”:真正的空单元格;只含一个空格或不可见字符的单元格(看起来空,实际上是文本);返回空字符串的公式结果(””)。三者对分析的影响完全不同——第一类在 COUNTBLANK 里算空,第二类不算,第三类算。所以”空值率”这个统计指标本身就可能是不准的。
让 AI 做空值体检时,建议加一句:”请区分’真正的空单元格’、’看起来空的字符’和’公式返回的空字符串’,如果无法区分,请说明。”它往往能识别出第二种(因为它看到的是字符),这会给你一个很实际的提示:这列可能被”人工补过空格”来绕过必填校验。
判断”真无”还是”漏填”的方法通常是看该字段在不同记录类型下的分布:如果”新品订单”的折扣全是空的,”老客订单”的折扣都有值,那空值很可能是”这个场景本来就没有折扣”;如果空值分布是随机的、零星散落的,那更可能是漏填。这个判断 AI 可以帮你做统计分析,但最后的定性必须由了解业务的人拍板。
重复:键的定义比去重本身重要一万倍
“重复”这个词在 Excel 里是一个陷阱。按整行去重,两条只有时间戳不同的记录算”不同”;按订单号去重,它们算”重复”。到底哪个对?取决于这批数据是怎么产生的。如果是从两个系统各导了一份,那订单号相同就是重复;如果是同一系统的操作日志,那两行都是真实的操作记录。
所以清洗重复的第一步不是”删”,而是先输出”疑似重复组”:把潜在重复的行两两并列出来,让用户判断。DeepSeek 在这一步非常擅长——它可以轻松列出”订单号相同但其他字段有差异”的行对,而这正是人工最难发现的。
异常值:只标记,不修改
这一条是我最想反复强调的。异常值不等于错误值。一张销售表里,某笔订单金额是其他订单的 50 倍,它可能是输错了,也可能是大客户订单。一个”看起来不可能”的日期,可能是补录的历史数据。一个”明显不合理”的库存数量,可能是盘盈盘亏的真实记录。
AI 的默认行为是”让数据看起来合理”,而数据工作的第一原则是”让数据保持真实”。这两个目标在异常值上直接冲突。所以规则必须写死:异常值只标记、不修改,由人决定。
为什么”一键清洗”是危险的
前面说的都是一个一个类型的处理。但”一键清洗”的危险,在于它把六类处理同时施加,然后不告诉你它做了什么。
具体有三重风险。
风险一:它会改掉”看起来奇怪但业务正确”的值
这是最核心的一条。AI 判断”奇怪”的标准是统计分布和常识,而业务判断”正确”的标准是规则和历史。这两者经常不一致。比如某公司的产品编码里有一个字母 O,与数字 0 看起来一样,AI 可能”抄录错误修正”,把 O 改成 0——而实际上那个 O 是公司编码规则里刻意保留的。
这类错误有一个共同特征:改完之后,数据看起来更整齐、更合理,但它是错的。靠肉眼看”数据质量”,你根本发现不了。
风险二:错误会被下游继承并放大
清洗后的表通常会被拿去做透视、做汇总、做报表。如果在清洗阶段误改了一个分类值,它会以”一条记录”的形式进入汇总,变成一个错误的合计。而下游看到的是”干净的表”,不会怀疑它。错误的成本被放大,而可追溯性被清零。
风险三:一次操作抹掉了全部中间状态
分步清洗的每一步都会留下中间状态,出了问题可以定位到”第几步出错”。一键清洗只有一个起点和一个终点,中间是一片黑箱。这就像把一份文件一次性大改然后覆盖保存,出了问题只能从头再来。
所以正确的用法不是”不用一键清洗”,而是把”一键”拆成”分步”,每一步都有预览和留痕。做到这一点,它的效率优势就还在,风险却降了一个数量级。
可复制模板二:清洗流水提示词
下面这个模板对应”体检 → 问题清单 → 规则建议 → 预览”四个步骤,把”应用”之前的所有事都交给它,应用本身留在 Excel。
你是我的 Excel 数据清洗顾问。请严格按四个阶段输出,**不要跳阶段、不要输出清洗后的整表**。
表数据在最后(CSV 格式,第一列是编号锚点)。
──────────
阶段 1:数据体检
──────────
输出以下信息:
- 总行数、总列数、表头
- 每一列的:识别到的数据类型、空值数量与占比、取值范围或样本值、唯一值数量
- 如果有疑似日期/金额/数量列,说明你的判断依据
──────────
阶段 2:问题清单
──────────
按问题类型分组,为每一类输出:
- 问题类型(空值/重复/格式不一致/异常值/编码/全半角)
- 涉及字段与行数
- 典型示例(最多 3 条,带编号)
- 严重程度:高 / 中 / 低,并说明判断依据
──────────
阶段 3:规则建议(只建议,不执行)
──────────
针对阶段 2 的每一个问题,给出 1-2 条候选处理规则,格式:
- 规则编号 R1、R2……
- 一句话描述规则
- 适用字段
- 预计影响行数
- **风险提示**:这条规则可能误伤什么情况
- 是否有"需要人来定"的分叉点(例如:空值算"真无"还是"漏填")
──────────
阶段 4:预览(等我说"执行规则 R__"之后再做)
──────────
收到我的指令后,按指定规则输出预览表:
编号 | 字段 | 原值 | 新值 | 命中规则 | 是否高风险
只列会被改动的行,不列未改动行。高风险项单独置顶。
──────────
硬性约束
──────────
- 异常值只标记,绝不修改。任何"超出合理区间"的值,在阶段 2 中列出即可。
- 空值不要默认填充。先给出"空值分布"的分析(按其他相关字段分组看空值率),
再给出 2 种以上解释,由我判断。
- 重复只输出"疑似重复组",不执行删除。
- 不确定的,宁可不处理,也不要猜。
现在开始:只做阶段 1 和阶段 2。
这个模板有一个刻意的设计:把”执行”这个动作留给我来触发(”等我说执行规则 R__ 之后再做”)。这是为了让清洗过程有一个明确的人类闸门。很多失败案例的根本原因,是在同一次对话里既让它分析又让它输出结果——它会在分析过程里不断”顺手”做决定。
可复制模板三:回滚留痕表结构
下面这张”留痕表”应该是一个独立的 sheet(或独立文件),每次清洗追加记录。字段设计已经在前面解释过,这里给出可直接建表的规格。
字段名 类型 说明 示例
──────────────────────────────────────────────────────────────
批次号 文本 每轮清洗唯一编号 CLEAN-20241105-01
时间 日期时间 执行时间 2024-11-05 14:32
操作人 文本 执行人 张三
复核人 文本 确认人(必填) 李四
编号 数值 对应数据行的编号锚点 1047
字段名 文本 被改动的列 下单日期
原值 文本 改动前的值(原样记录) 2024/3/7
新值 文本 改动后的值 2024-03-07
规则编号 文本 命中的规则 R2
规则说明 文本 规则内容(一句话) 日期统一为 YYYY-MM-DD
是否人工确认 布尔 是否经过人工预览确认 是
确认说明 文本 例外情况或人工判断理由 —
变更类型 枚举 修正 / 标准化 / 补录 / 删除 标准化
──────────────────────────────────────────────────────────────
使用约定:
1. 每轮清洗新建一个批次号,不覆盖历史批次。
2. 一次清洗 = 一个批次 = 一张留痕表(追加到同一 sheet,用批次号区分)。
3. 任何"删除行"操作,必须在留痕表中记录被删行的完整内容(复制到一个隐藏 sheet)。
4. 复核人一栏为空的行,视为"未确认改动",终版文件中不允许存在。
最后这条约定值得强调:复核人为空的行不允许进入终版。这是一条组织纪律,不是技术规则,但它往往比任何技术手段都有效——因为它把”留痕”从”愿望”变成了”前置条件”。
场景三:让表格自己”找茬写报告”——把 AI 从执行者变成审计员
如果说场景一、二是”让 AI 少动手”,场景三是”让 AI 多动眼”。这是三者里最安全、也最容易出彩的一个。原因是:找茬的输出是一份”报告”,不是一张”改好的表”,报告天然只读,错了也只是漏报或误报,不会破坏任何数据。
但”找茬”本身有讲究。让它”帮我看看有没有问题”,它会给你一堆泛泛而谈的观察。让它按明确的检查清单找,效果完全不同。
“找茬”到底找哪些茬
Excel 里常见的”问题”可以归为五类。每一类的检测逻辑不同,提示词里的问法也应该不同。
类型一:字段间逻辑矛盾
这是最容易程序化检测、也最容易被忽略的一类。典型例子:开始日期晚于结束日期;单价 × 数量 ≠ 金额;入库数量已经大于采购数量;年龄字段填了 130;性别字段与称谓字段不匹配。
这类检测之所以重要,是因为它不需要业务知识,只需要算术和常识,而 AI 在这两点上非常可靠。让它对每一行做”字段交叉校验”,往往能一次捞出一批严重错误。
类型二:分布异常
某个月的销售额突然是其他月份的 20 倍;某个部门的平均客单价远低于其他部门;某天的订单量几乎是零。这类问题靠”看数值”很难发现,需要做分组统计后比较。
DeepSeek 在这类任务上有一个很容易被低估的能力:它能自己写出一段统计描述(”按月份分组后,2024-06 的订单数是其他月份均值的 12.3 倍”),并把异常点标出来。这比你在 Excel 里手动画 PivotChart 快得多。
类型三:一致性
同一个客户有三种写法:”阿里巴巴”、”阿里巴巴集团”、”Alibaba”;同一个产品有两种编码格式;同一个部门今年叫”市场部”、去年叫”市场营销部”。这类问题会让透视表把一个对象拆成多个,是”数据看起来没问题但汇总结果不对”的典型元凶。
检测一致性的关键是先聚类再比较:让 AI 把列里的所有唯一值列出来,按相似度归组,然后你把归组结果当作”疑似同一对象”逐个确认。这一步人工几乎做不了(几百个客户名两两比较),AI 却做得很轻松。
类型四:完整性
必填项缺失。但”必填”不是所有行都一样——A 类订单必须有合同号,B 类订单可以没有。所以完整性检测必须先定义”按什么条件必填”,然后按条件检查。让 AI 做这件事,要给它条件,而不是给它一句”检查必填项”。
类型五:时序异常
先发货后下单、先付款后退款但退款金额大于付款、创建时间晚于更新时间。这类问题在业务表里非常常见,而且在做流程审计时价值极高。检测方法通常是比较两个时间字段的先后关系,逻辑简单,但需要知道哪两个字段应该有什么先后关系。
让它写报告的结构
“找茬”的产物如果只是一堆发现,很难被用起来。真正好用的产物,是一份有结构的报告。建议固定为五个部分:
第一部分:数据概览
告诉读者这份表是什么、有多大、覆盖什么时间段、关键指标的量级。这部分看似无关紧要,但它决定了后面所有发现的”语境”——同样一个 100 万的异常值,在一张平均 10 万的表里和平均 100 万的表里,意义完全不同。
第二部分:发现的问题(按严重程度排序)
严重程度排序是这份报告的灵魂。一个”开始日期晚于结束日期”的问题,严重程度远高于”某列有尾随空格”。让人先看最严重的,是报告的基本素养。建议用三级:高(可能导致业务错误或金额错误)、中(可能影响汇总准确性)、低(格式或整洁度问题)。
第三部分:每条的定位(行号、字段、原值)
这一部分决定了报告能不能被落。一条”有几行开始日期晚于结束日期”的发现,等于没有发现;一条”编号 1047、1082、1109 三行,开始日期晚于结束日期”的发现,可以直接拿去筛。定位信息必须包含:编号、字段、原值、与之矛盾的另一字段的原值。
第四部分:可能原因
“可能原因”这一栏的价值经常被低估。它让读者可以判断”这条到底要不要处理”。比如”开始日期晚于结束日期”可能是录入时把两个日期填反了(从其他字段看,差的正好是同一批人),也可能是业务上的”先签框架后补正式合同”(合理)。同样一个事实,原因不同,处理方式完全不同。
第五部分:建议动作
建议动作要具体到”在 Excel 里怎么做”。不是”建议检查一下”,而是”用筛选条件【开始日期 > 结束日期】,逐条与纸质合同核对”。让 AI 给出可执行的动作,是把”发现”变成”行动”的最后一步。
关键提示:要”如何复核”,不要只给结论
这是场景三里最重要的一条提示词技巧。
原因是:AI 很可能把正常波动报成异常。季节性波动、促销、大客户订单、系统迁移期间的补录,都会让数据在统计上”看起来异常”,但业务上是正常的。而 AI 不知道你的业务,它只知道”这一项比别的能大两个数量级”。
所以,与其让它下结论”这是异常”,不如让它同时给出”如果这条是真的,该怎么验证;如果是误报,通常是因为什么”。这相当于给它戴上一副”自我怀疑”的眼镜,产出质量会明显提升。
具体的问法可以是:”对每一条发现,请额外给出两种复核方法:一种是在 Excel 里用筛选或公式怎么查,另一种是应该找谁、看哪份原始单据核对。”这个方法一旦给出,你就能以很低的成本判断每一条是真是假。
找茬的三种典型用法
找茬这件事并不需要每次都全量扫描。实际工作中它有三种最常用的切入方式,对应的表规模、时间投入和产出价值都不同,选对方式比把提示词写漂亮更重要。
用法一:月度数据的例行体检
每个月数据出来之后,先”找茬”再分析。这一用法的价值在于”早发现”——很多数据问题是在月底汇总时才发现,那时候改起来已经来不及了。
用法二:接手别人表格时的一次性审计
最典型的使用场景。新接手一张表、一个新的数据源、一份历史台账,你完全不了解它,让 AI 先”找一遍茬”,能在很短的时间内建立起对这张表”哪里可能有坑”的认知。这比自己一行一行看效率高得多。
用法三:跨期数据的对比审计
把本期的表和上期的表交给它,让它找”哪些变化是符合预期的、哪些是可疑的”。这一用法需要两张表都放得下,适合中小规模的表。
这三种用法里,我推荐第二种——接手审计。它的价值最高,风险最低(本来就是陌生数据,它的误报不会让你损失什么,反而能提示你”这里可能有坑”)。
可复制模板四:找茬报告提示词
你是我的 Excel 数据审计员。你的任务不是清洗数据,也不是给出修改后的表,
而是**只读地检查并输出一份问题报告**。
表数据在最后(CSV,第一列是编号锚点)。
──────────
请按以下五类做检查
──────────
A. 字段间逻辑矛盾
检查所有可以两两比对的字段:
- 日期类:开始日期是否 ≤ 结束日期;创建时间是否 ≤ 更新时间
- 金额类:单价 × 数量 是否约等于 金额(允许 ±1 元误差)
- 数量类:入库数量是否 ≤ 采购数量;已发货数是否 ≤ 订单数
- 其他:任何你认为存在业务约束的字段组合(请说明你的假设)
B. 分布异常
- 对每个数值列,给出均值、中位数、最大值、最小值
- 对每个可分组字段(月份、部门、区域),检查是否存在"远高于/远低于"其他组的
- 标明你用的判断标准(例如:超过中位数的 5 倍)
C. 一致性
- 对每个名称类字段(客户名、产品名、部门名),列出所有唯一值
- 按"疑似同一实体"归组(例如:阿里巴巴 / Alibaba / 阿里巴巴集团)
- 给出每组你建议统一的写法
D. 完整性
- 按"字段"给出空值率
- 如果你能识别出记录类型(例如 订单类型 A/B),按类型分别统计空值
- 标注哪些空值可能是"真无"(业务上本来就没有)、哪些可能是"漏填"
E. 时序异常
- 检查所有时间字段之间的先后关系是否合理
- 特别关注:发货时间 < 下单时间、付款时间 < 发货时间(若业务上不应如此)
──────────
报告结构(严格遵守)
──────────
一、数据概览(3-5 行:行数、覆盖期间、关键指标量级)
二、问题清单(按严重程度 高→中→低 排序)
每条包含:
1) 编号(如 P01)
2) 严重程度(高/中/低)+ 一句话理由
3) 定位:编号锚点 + 字段名 + 原值(最多列 10 条,超出部分给出数量和
用于筛选的条件)
4) 可能原因(至少 2 种)
5) 建议动作(具体到 Excel 操作)
6) **如何复核**:给出两种方法——
a. 在 Excel 里怎么查(写出筛选条件或公式)
b. 找谁 / 看什么原始单据核对
三、无法判断的项(列出你不确定的地方,说明为什么不确定)
四、如果你认为以上任何一条可能是"正常波动被误报",请单独指出并说明理由
──────────
硬性约束
──────────
- 不要输出修改后的表。
- 不要臆造数据里没有的字段或值。
- 每条发现的"可能原因"必须包含至少一种"这是正常的"的可能性。
- 统计类结论必须写明你的判断标准,不要只说"异常"。
这个模板里最值得留在心里的,是最后四条硬性约束。特别是"每条发现必须包含至少一种'这是正常的'的可能性"——这一条把 AI 从"报警器"变成了"审计员",它会主动帮你区分"真问题"和"看起来像问题"。
找茬报告应该交付成什么
报告本身建议就存成 Excel 的一个 sheet,而不是一份 Word。原因是:报告里的"定位"一栏(编号)可以直接拿去在主表里做筛选,边看报告边筛主表,比在两份文件之间来回切换高效得多。
一个小建议:在报告 sheet 里留一列"处理状态"(待处理 / 已处理 / 判定为正常 / 已忽略),每看完一条勾一个。一个月之后回头看,这张表就是你的"数据质量台账"。
进阶:用同一套边界意识去处理函数、图表与透视表
上面三件事只覆盖了 Excel 的一部分。实际工作里还有三类高频需求:写公式、做图表、做透视。它们和前三件事的边界逻辑一致,但踩坑点不同,值得单独说清。判断标准还是那一句:它只依赖本格,还是依赖格子之间的关系?
写公式:这是 AI 在 Excel 上最稳的用法之一
如果只能挑一件事让 AI 做 Excel,我会选"写公式"。原因是:公式的输入和输出都是明确的——你给出需求("判断这行的日期是否在 2024 年第二季度,且金额大于 1000"),它给出一段文本(=AND(D2>=DATE(2024,4,1),D2<=DATE(2024,6,30),E2>1000)),这段文本在你手里,你可以先在一两个格子上试,试对了再下拉。它不是替你改了表,它是给了你一个可以试错的工具。这正是"读和判"的延伸形态。
让它写公式时的三个必备信息
公式写错,九成是因为信息不全。给它写公式,至少要交代三件事:列字母与列名的对应关系("D 列是下单日期,E 列是金额")、数据从第几行开始("第 2 行是第一条数据,第 1 行是表头")、你要的输出形式(是 TRUE/FALSE、还是"是/否"、还是直接返回某个值)。少任何一条,它都可能给出一个"看起来对、拖下去全错"的公式,最典型的是绝对引用与相对引用弄反,导致下拉后整列错位。
一个校验习惯:先拿 3 行手算对一遍
拿到公式后不要在整列上直接拖。先挑 3 行——一行"应该返回是"、一行"应该返回否"、一行"属于边界情况"(正好等于 4 月 1 日,或正好等于 1000)——手工算一遍正确结果,再把公式填进去看是否一致。这三行都对,再下拉。这个习惯成本不到一分钟,却能挡住绝大多数"符号写反了""边界算错了"的问题。
什么时候公式也会翻车
两种场景:一是它写出了你 Excel 版本不支持的新函数(比如你的 Excel 2016 不支持 XLOOKUP),二是它用了数组公式但你直接回车而不是 Ctrl+Shift+Enter。遇到 #NAME? 和 #VALUE! 时,把报错文本连同公式原样贴回去问它,通常一次就能定位。但不要让它"再给我一个替代方案"然后直接采用——先问"为什么原来的不行",你才能判断新方案是不是在用另一个坑换这个坑。
做图表:它能给建议,但图必须你自己画
DeepSeek 不能直接生成 Excel 原生图表。它能做的是:根据数据特点建议"用什么图"、告诉你"这个数据系列应该放在次坐标轴"、给出图表的标题与注释文案。这些建议的价值不低——很多人做图的问题不是不会画,是选错了图型(比如用饼图展示 12 个类别、用折线图展示无序分类)。
但它给的建议需要过滤。它有时会推荐看起来很专业的复合图(柱线组合 + 次坐标轴),而如果你的读者是一线同事,这种图反而增加理解成本。图表的服务对象是人,不是展示专业性。把它当作一个"给你几种可选方案"的顾问,而不是"告诉你怎么做"的权威,用法就对了。
做透视表:让它写"操作步骤",而不是写"透视结果"
透视表的本质是"按字段分组聚合",这是一个可以由文字描述清楚的操作。让 AI 做透视表,最稳的方式不是让它算结果,而是让它输出一行操作说明书:行区域放什么、列区域放什么、值区域放什么(求和还是计数)、筛选器放什么。你拿着这份说明书去点,三十秒点完,而且每一步都是你可以理解和复用的。
反过来,让它"算出透视结果"再贴回 Excel,就等于让它输出一张新的汇总表——这张表是静态的,源数据一变它就过时,而且你无法验证它分组是对的。这和场景一里"不要输出整表"是同一条原则。
一个判断:透视表做不出来,往往不是工具问题
如果一张表做透视总是出问题——某个分类下多出一行、某个数值求和变成计数、某个日期无法按月分组——八成是数据本身有问题(空格字符、文本型数字、日期被存成了文本)。这时候让 AI 找茬(场景三)比让 AI 教你怎么做透视更有用。这个诊断顺序很重要:先修数据,再做透视,反过来会浪费大量时间在调整透视表格式上。
三个场景的共同骨架:能力边界 → 正确用法 → 失败兜底
前面三个场景,结构是刻意统一的。下面把它们并排放在一起,是为了让你在动手之前,有一个可以随时对照的"边界地图"。
| 维度 | 场景一:改单元格 | 场景二:清洗预览 | 场景三:找茬报告 |
|---|---|---|---|
| AI 角色 | 执行清单生成器 | 清洗顾问 + 预览生成器 | 只读审计员 |
| 最适合的活儿 | 规则明确、逐格确定的批量改写 | 识别脏数据模式、出候选规则 | 逻辑矛盾、分布异常、一致性、时序 |
| 绝对不要做 | 改合并单元格、改公式列、跨 sheet 改值 | 一键全清、自动修异常值、按整行去重 | 输出修改后的表 |
| 必须的闸门 | 改动预览三列对照 | 七步流水,每步有人确认 | 每条附"如何复核" |
| 产物形态 | 改动清单(编号/原值/新值) | 问题清单 + 规则 + 预览 + 留痕表 | 结构化报告 + 处理状态 |
| 主要风险 | 连带改动、公式被覆盖 | 改掉"奇怪但正确"的值 | 正常波动被误报为异常 |
| 兜底手段 | 另存副本 + 只出清单 + 差异比对公式 | 原表保留 + 留痕 + 可解释 | 要求复核方法 + 抽 10 条人工验证 |
| 执行落点 | Excel | Excel / Power Query | Excel(报告 sheet) |
这张表最下面两行是关键:无论哪个场景,"执行落点"都在 Excel 里,AI 的产物始终是"清单 / 预览 / 报告"这三种只读形态。守住这一点,你已经避开了 80% 的坑。剩下的 20% 出在"输入"上——表太大它读不全、表结构它理解错、行号它对不上。这些用准备篇里的三条路径和行号锚点就能大部分解决。
一条套用逻辑:任何 Excel 任务,先问三个问题
问题一:这件事的结果能否被逐条验证?
能,就可以交给 AI(如改日期格式)。不能(如"帮我整理得更清楚"),就不要交,因为交出去的是一份无法验收的活。
问题二:这件事是否依赖格子之间的关系?
依赖(合并、公式、跨 sheet),退回 Excel。不依赖(本格值改写),可以交给 AI。
问题三:AI 出错时,我能否在 10 分钟内发现并回滚?
能,就放手让它做一部分。不能,就先把"能回滚"这件事补上,再动手。这一问是三个问题里最重要的,它直接对应"后悔药"的三层。
大多数人做错的地方:把 AI 当成 Excel 的"替代品",而不是"审阅者"
前面三节讲的都是"怎么做对"。这一节讲"为什么大多数人做错"——因为错误往往不发生在操作层面,而发生在认知层面。有三个非常普遍的误区,几乎每一个第一次把 AI 用在 Excel 上的人都踩过。
误区一:以为"AI 读了表"等于"AI 看懂了表"
很多人看到 DeepSeek 能精准复述表头、能说出某列有 47 个空值,就默认它"理解"了这张表。复述和统计只说明它读到了字符,不说明它读到了结构。它不知道 D 列是公式、不知道 H 列有数据验证、不知道第 200 行开始是另一张表的拼接。所有这些"看不见的结构",恰恰是改动时最容易翻车的地方。
一个很实用的自检方法是:让它回答几个"结构性问题",比如"这张表里有没有哪一列的值是完全由其他列算出来的?"如果它答不出来(大多数情况答不出来),你就知道它看不到依赖关系——这时候任何涉及"改一个值会影响别的值"的活,都不要交。
误区二:把"看起来整齐"当成"清洗成功"
这是最危险的一个误区,因为它没有任何外在信号。清洗后的表更整齐、更漂亮、空行没了、格式统一了,一切看起来都完美。而"清洗成功"的标准从来不是整齐,是准确——每一格的值都与业务事实一致,或者至少每一处改动都是经过确认的。
整齐和准确在很多情况下是冲突的:把异常的金额"修正"到正常区间会让表更整齐,但它是错的;把空值全填 0 会让表更整齐,但掩盖了缺失;把疑似重复的行删掉会让表更整齐,但可能删掉了真数据。
这里的反常识判断是:一份"看起来有点脏但每一处脏都标注清楚"的表,比一份"看起来干净但不知道改了什么"的表,价值高得多。前者可以直接拿去做分析,后者需要重新清洗一遍才能用。
误区三:追求"一句话搞定"
短视频里最吸引人的演示,永远是那种"一句话让 DeepSeek 帮我做完整个 Excel"。这种演示之所以好看,是因为它省略了验证环节。而在真实工作里,验证才是成本的大头。
"一句话搞定"的问题不在于它做不到,而在于它把成本从"操作"转移到了"验证",而且验证成本往往更高。一次三步走的操作,每步一句话,你能在中间随时纠正;一次性的"全做完",你只能在最后面对一份你无法验收的结果。
我见过太多人在这上面浪费时间的场景:用一句话清洗一份 800 行的表,然后花两个小时逐行核对它到底改了什么,最后发现有三处改错了,重来一遍。而如果分七步做,每一步都能在 2 分钟内确认,总耗时不到 20 分钟。
补一个容易被忽略的误区:以为"模型升级了就能做"
还有一种说法是"等模型再强一点,这些限制就没了"。这个判断我不认同。模型再强,也改变不了三件事:它只能看到你给它的那部分数据(这是输入边界,不是能力边界);它输出的是文本,不是带格式的工作簿(这是输出格式,不是能力边界);它无法验证自己的输出(这是训练目标决定的,它被训练成"给出流畅答案",不是"给出可验证答案")。
所以随着模型变强,正确的用法会更强势,而不是更随意。模型越强,越应该让它去做"读和判"里更难的部分(更复杂的一致性判断、更隐蔽的时序异常),而不是把"写"交给它。
FAQ:六个实际操作中最常被问到的问题
问一:DeepSeek 能直接操作我的 Excel 文件吗?
不能直接操作。你上传或粘贴给 DeepSeek 的是一次性输入,它在对话里返回的是文本;把文本写回 Excel 这一步需要你自己完成(复制粘贴、另存 CSV 导入、或配合本地脚本)。所以"让 AI 改 Excel"的真实含义,是"让 AI 出一份改动说明,由你或脚本在 Excel 里落地"。理解了这个边界,很多困惑自然消失——比如"为什么它看不到我的公式"、"为什么它数出来的行号不对",答案都是同一个:它拿到的是一份降维副本,不是你的工作簿。
问二:为什么它返回的表格行号和我 Excel 里看到的对不上?
最常见的原因是表头、空行、冻结窗格或隐藏行。CSV 里通常只保留数据和表头,你在 Excel 里看到的行号包含了标题行、说明行,甚至合并单元格占的行。解决办法是固定的:在数据里插入一列自增编号作为锚点,所有定位都用这一列的编号。如果在提示词里不说明,它默认会用"第 N 行",而这个 N 几乎一定与你的 Excel 行号不同。这是一个小习惯,但它能消除大约八成"按定位改错格"的事故。
问三:让 AI 清洗后,我该拿什么标准判断它做得对不对?
三条标准,按重要程度排:第一,改动清单是否完整——它是不是只改了它说改的那些格子;第二,改动理由是否站得住——每一处改动是否对得上一条明确、你认可的规则;第三,有没有可回滚的记录——如果明天的数据出了问题,你能否在今天之内退回到今天早上的状态。三条都满足,这次清洗才算成功。只看"表是不是变整齐了"来验收,几乎必然踩坑。
问四:几千行的大表,能不能直接上传给 DeepSeek?会不会读不全?
可以上传,但要分情况。几百行到一两千行的表,上传 CSV/XLSX 通常能完整读取,但建议先让它复述行数和表头来确认。超过几千行,文件会被切成多段处理,模型对长表中后段的注意力会下降,可能出现"前半段细节清楚、后半段只给了总结"。这时候最稳的做法是按业务维度分块(按月、按部门),每块单独提问并汇总,同时把跨块的问题(如重复检测)单独抽出来做——因为分块会把跨块关系切断。
问五:它说某几行是"异常值",我该直接改吗?
不该。异常值只应"标记",不应"修改",这是本文反复强调的原则。正确做法是拿着它给出的定位(编号、字段、原值、如何复核),去 Excel 里筛出来,再拿原始单据或业务资料核对。核对之后如果确认是错的,再改;如果确认是对的,就把这条标记为"正常波动",并在留痕表里记一笔"经核对,为正常业务"。这一笔记录本身就是数据质量的一部分——它证明了你看过这一条,而不是被它吓到。
问六:这套方法看上去挺繁琐,一个人做日常小表值得吗?
值得,但复杂度要按规模调。对于 20 行的小表,不需要走七步,只需要两条:改之前另存一份,改之后拿公式比一下差异。对于月度对账、客户主数据这类会被反复使用的表,七步流水的每一分投入都会在未来省下更多。判断标准很简单:这张表后续还会被用几次?只用一次的表,怎么快怎么来;会被用十次的表,值得把"后悔药"建好。真正昂贵的从来不是建留痕,而是"出了问题、不知道改了什么、只能从头再来一次"。
收尾:把"写"的权利还给 Excel,让 AI 专心做它最擅长的事
把三个场景放在一起看,会发现它们其实是同一件事的三个侧面。
场景一告诉你:改单元格时,让它出清单,不要出整表。
场景二告诉你:清洗时,让它定规则、出预览,执行留在 Excel。
场景三告诉你:找茬时,让它出报告、给复核方法,结论留给人。
三件事的主语都是同一个:AI 负责"读和判",Excel 负责"写",人负责"确认"。这不是对 AI 能力的低估,恰恰是对它能力的正确使用——它的强项是理解语言、发现模式、解释原因,这些在"读和判"里全部能用上;它的弱项是精确写出带结构的工作簿,而这个弱项在"写"里会被无限放大。
最后给一个可以直接用的清单,下次把 Excel 交给 DeepSeek 之前,扫一眼:
- 原表另存了吗?文件名带日期了吗?
- 这列是公式列吗?是的话,跳过,不改。
- 这次有没有合并单元格、跨 sheet 引用、多表关联?有的话,先退回 Excel 处理。
- 提示词里写了"只输出改动清单,不要输出整表"吗?
- 表格加了编号锚点吗?定位是用编号还是行号?
- 改动预览的三列(原值/新值/编号)都在吗?
- 这次改动有对应的留痕批次号吗?
- 如果它报了一个异常值,我准备怎么复核?
八条清单,每一条都对应前面踩过的一个坑。把它们养成习惯之后,你会发现 Excel + AI 的效率提升是真实的——只不过这个提升不来自"它帮你改",而来自"它帮你查清楚该改哪里、改完会怎样、出错了怎么退"。
毕竟,一张表最珍贵的品质,从来不是"整齐",而是"可信"。AI 最能帮上忙的,是让"可信"这件事变得可检查;而"整齐",随时可以在 Excel 里十秒钟做到。







暂无评论内容