AI Excel 清洗:先固定规则,再批量改数据
最后更新:
保留原表、逐列转换、把冲突单列。模型可以写公式说明,最终数值要由确定的计算规则产生。
清洗前先定义一行代表什么
打开工作簿先盘点工作表、表头、公式、隐藏行列和合并单元格。问清每行是订单、订单明细还是更新事件;同一个订单号出现两次,可能是重复导入,也可能是两件不同商品。没有行粒度和唯一键,去重会变成删数据。
本页使用五行虚构采购明细,只演示一个订单编号对应一条明细、同币种且整数金额的简化场景。它不是客户账表,也没有在 Excel 原生应用运行。AI 的任务是解释列、建议规则与帮助写公式;你确认规则后,才在副本中执行。敏感字段先移除,模型不需要知道真实联系人就能解释数量与单价的关系。
五行教学输入:重复、空格与空值都保留在原表
新建 raw、clean、issues 三个工作表,raw 保持只读副本。下面的“首尾空格”和“不换行空格”是输入特征说明,不是要输入到单元格的文字。订单编号以文本保存,避免前导零丢失;原始值与清洗值分列,下一轮才能解释到底改了什么。
本例 B001 两行在标准化后完全相同,因此合并为一条并记录重复来源。B003 数量为空,保留 null;B004 取消,保留记录但不参与有效求和。去重后应有四条业务记录,只有 B001 和 B002 可以计算有效金额。

| 编号 | 部门原文特征 | 数量原文 | 单价原文 | 状态 |
|---|---|---|---|---|
| B001 | 首尾有空格的“设计部” | 12 | 20 | 有效 |
| B001 | 尾部有不换行空格的“设计部” | 12 | 20 | 有效 |
| B002 | 运营部 | 3 | 50 | 有效 |
| B003 | 运营部 | 空单元格 | 80 | 待确认 |
| B004 | 设计部 | 2 | 30 | 取消 |
让 AI 输出规则清单,而不是悄悄修好整张表
把字段样本和已知约束交给模型,要求它逐列解释转换与停止条件。部门名允许去掉首尾空白,不代表商品名称中的所有空格都可以删除;编号可以统一大小写的前提,是业务确认大小写不区分不同编号。不要让模型把拼写相似的两家公司自动合并。
先人工确认规则,再选十几行包含异常的样本试算。清洗中遇到未知状态、无法解析的数值或同编号不同数量,写入 issues 并暂停相关记录。一个“其他”分类不应吞掉所有新状态,否则下一次数据结构变化就会无声通过。
只提出转换规则,不改写原始记录,不补造缺失值。
本表粒度:一个编号对应一条采购明细,金额均为人民币。
输出:列名、原始示例、标准化方式、允许值、冲突条件、验证方法。
数量为空时保持 null,不能写成 0。
完全重复可合并并保留来源;同编号字段不同则列冲突,不能任选一行。
有效且数量、单价均为数值时才算金额;取消和待确认保留。
额外列出本表尚未确认的规则,不替业务人员决定。用辅助列写公式,让原始值和结果可以并排看
在完成重复与冲突检查的 clean 表中,A 至 E 分别放编号、部门、数量、单价、状态,F 至 J 放清洗后的部门、数量、单价、状态和有效金额。下面公式从第 2 行填写到第 5 行,适用于本例无千位分隔的数字文本;更复杂的币种和地区格式应先单独规定解析规则。
TRIM 不会自动去掉不换行空格,所以先用 UNICHAR(160) 替换,再处理普通空白。Microsoft 官方解释了这个差异;SUMIFS 则用于按条件求和,求和区域与条件区域要同样大小。查阅日期:2026-09-12。TRIM 说明、SUMIFS 说明。公式未在 Excel 应用内执行,下一节用 Node.js 独立检查本例规则结果。
F2 =TRIM(SUBSTITUTE(B2,UNICHAR(160)," "))
G2 =IF(TRIM(C2)="","",IFERROR(VALUE(TRIM(C2)),"待检查"))
H2 =IF(TRIM(D2)="","",IFERROR(VALUE(TRIM(D2)),"待检查"))
I2 =TRIM(SUBSTITUTE(E2,UNICHAR(160)," "))
J2 =IF(AND(I2="有效",ISNUMBER(G2),ISNUMBER(H2)),ROUND(G2*H2,2),"")
有效合计 =SUMIFS(J2:J5,I2:I5,"有效")
预期:B001 为 240,B002 为 150;另两行金额留空;合计 390。本地代码复算:四条记录、一个重复、合计 390
以下自包含 JavaScript 使用同一组虚构输入,不读写工作簿,不依赖新库。先显式识别空字符串,再转换数值,避免 Number(空字符串) 变成 0。相同编号标准化后的字段若不同,代码直接报冲突,不通过“保留第一条”猜测业务真相。
运行后的预期结构为 rows: 4、duplicates: 1、total: 390、pending: B003。这个检查证明的是小样本清洗与计算逻辑,不证明 Excel 公式已经重算,也不证明全量业务数据无异常。实际处理含小数的金额时,应约定精度与舍入层级,使用分等最小单位或明确的十进制定点方案。
const raw = [
["B001", " 设计部 ", "12", "20", "有效"],
["B001", "设计部\u00a0", "12", "20", "有效"],
["B002", "运营部", "3", "50", "有效"],
["B003", "运营部", "", "80", "待确认"],
["B004", "设计部", "2", "30", "取消"]
];
const clean = value => value.replaceAll("\u00a0", " ").trim();
const number = value => {
const text = clean(value);
if (text === "") return null;
const valueNumber = Number(text);
if (!Number.isSafeInteger(valueNumber) || valueNumber < 0) throw Error("INVALID_NUMBER");
return valueNumber;
};
const byId = new Map();
let duplicates = 0;
for (const [id, dept, q, p, status] of raw) {
const row = { id: clean(id), dept: clean(dept), q: number(q), p: number(p), status: clean(status) };
if (!["有效", "取消", "待确认"].includes(row.status)) throw Error("INVALID_STATUS");
if (byId.has(row.id)) {
if (JSON.stringify(byId.get(row.id)) !== JSON.stringify(row)) throw Error("ID_CONFLICT");
duplicates++;
} else byId.set(row.id, row);
}
const rows = [...byId.values()];
const valid = rows.filter(r => r.status === "有效" && r.q !== null && r.p !== null);
console.log(JSON.stringify({ rows: rows.length, duplicates,
total: valid.reduce((sum, r) => sum + r.q * r.p, 0),
pending: rows.filter(r => r.q === null || r.p === null).map(r => r.id) }));去重与选最新版本是两项不同的规则
完全重复是相同业务内容被导入两次;版本冲突则是同一编号出现两个不同值。后者需要可靠版本号、更新时间和批准状态才能选用,不能假设排在下面的就是新值。将原始来源位置挂在保留记录上,另一条放入重复清单,便于追溯。
如果改用 Power Query,先明确参与去重的列。官方说明文本比较区分大小写,而且移除重复不保证保留哪一条实例;因此“先排序再点击去重”不应直接当作业务版本选择规则。查阅日期:2026-09-12。Power Query 重复值处理。本页没有运行 Power Query,相关菜单仅作为另一条实现路线的核查入口。
复核不是只看最后一个合计单元格
先核对输入五行、去重后四行、重复一行的关系,再看两条有效、一条取消、一条待确认是否都留下。逐一检查 B003 数量仍为空,B004 没被计入,B001 没计两次。数量与状态的错误恰好抵消时,合计也可能正确,所以需要这些局部检查。
把辅助列公式向下填充后检查引用范围,尤其是追加新数据有没有进入汇总范围。日期按明确格式导入,不把文本日期与真实日期混用。若源文件来自PDF 抽取,还要先验证是否漏行;清洗程序不能从已缺失的数据中恢复整条原文。
交付可重做的工作簿,并记录真实投入
常见问题
空值能统一补成 0 吗?
不能。0 表示已知数量为零,空值表示未知。本例 B003 必须待确认,补零会隐藏资料缺失。
为什么 TRIM 后看似重复的部门仍不同?
可能含不换行空格等不同字符。先确认字符来源,再按列制定替换规则,不要删除所有空白破坏名称。
同编号保留最新一行不就行了吗?
只有可靠的版本号或更新时间及明确业务规则才能判断最新。完全重复可以合并,字段冲突必须另行确认。
这里生成了可下载 Excel 文件吗?
本页提供教学数据、公式和自包含代码,没有交付或验证 XLSX 工作簿。需要在目标表格应用中建立副本、填公式并重算验收。
AI 写出的公式可以直接覆盖整列吗?
先在辅助列检查普通行、空值、重复与异常,再逐步扩大范围。保留原始列和公式版本,发现错误才能恢复。