AI Excel 清洗:先固定规则,再批量改数据

最后更新:

保留原表、逐列转换、把冲突单列。模型可以写公式说明,最终数值要由确定的计算规则产生。

清洗前先定义一行代表什么

打开工作簿先盘点工作表、表头、公式、隐藏行列和合并单元格。问清每行是订单、订单明细还是更新事件;同一个订单号出现两次,可能是重复导入,也可能是两件不同商品。没有行粒度和唯一键,去重会变成删数据。

本页使用五行虚构采购明细,只演示一个订单编号对应一条明细、同币种且整数金额的简化场景。它不是客户账表,也没有在 Excel 原生应用运行。AI 的任务是解释列、建议规则与帮助写公式;你确认规则后,才在副本中执行。敏感字段先移除,模型不需要知道真实联系人就能解释数量与单价的关系。

五行教学输入:重复、空格与空值都保留在原表

新建 raw、clean、issues 三个工作表,raw 保持只读副本。下面的“首尾空格”和“不换行空格”是输入特征说明,不是要输入到单元格的文字。订单编号以文本保存,避免前导零丢失;原始值与清洗值分列,下一轮才能解释到底改了什么。

本例 B001 两行在标准化后完全相同,因此合并为一条并记录重复来源。B003 数量为空,保留 null;B004 取消,保留记录但不参与有效求和。去重后应有四条业务记录,只有 B001 和 B002 可以计算有效金额。

五行原始明细经过标准化、去重、空值隔离与有效金额汇总的教学图
虚构数据清洗教学示意,展示输入与预期检查;不是 Excel 软件截图。
编号部门原文特征数量原文单价原文状态
B001首尾有空格的“设计部”1220有效
B001尾部有不换行空格的“设计部”1220有效
B002运营部350有效
B003运营部空单元格80待确认
B004设计部230取消

让 AI 输出规则清单,而不是悄悄修好整张表

把字段样本和已知约束交给模型,要求它逐列解释转换与停止条件。部门名允许去掉首尾空白,不代表商品名称中的所有空格都可以删除;编号可以统一大小写的前提,是业务确认大小写不区分不同编号。不要让模型把拼写相似的两家公司自动合并。

先人工确认规则,再选十几行包含异常的样本试算。清洗中遇到未知状态、无法解析的数值或同编号不同数量,写入 issues 并暂停相关记录。一个“其他”分类不应吞掉所有新状态,否则下一次数据结构变化就会无声通过。

清洗规则审阅提示词.txt
只提出转换规则,不改写原始记录,不补造缺失值。
本表粒度:一个编号对应一条采购明细,金额均为人民币。
输出:列名、原始示例、标准化方式、允许值、冲突条件、验证方法。
数量为空时保持 null,不能写成 0。
完全重复可合并并保留来源;同编号字段不同则列冲突,不能任选一行。
有效且数量、单价均为数值时才算金额;取消和待确认保留。
额外列出本表尚未确认的规则,不替业务人员决定。

用辅助列写公式,让原始值和结果可以并排看

在完成重复与冲突检查的 clean 表中,A 至 E 分别放编号、部门、数量、单价、状态,F 至 J 放清洗后的部门、数量、单价、状态和有效金额。下面公式从第 2 行填写到第 5 行,适用于本例无千位分隔的数字文本;更复杂的币种和地区格式应先单独规定解析规则。

TRIM 不会自动去掉不换行空格,所以先用 UNICHAR(160) 替换,再处理普通空白。Microsoft 官方解释了这个差异;SUMIFS 则用于按条件求和,求和区域与条件区域要同样大小。查阅日期:2026-09-12。TRIM 说明SUMIFS 说明。公式未在 Excel 应用内执行,下一节用 Node.js 独立检查本例规则结果。

clean工作表公式.txt
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 公式已经重算,也不证明全量业务数据无异常。实际处理含小数的金额时,应约定精度与舍入层级,使用分等最小单位或明确的十进制定点方案。

clean-example.mjs
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 抽取,还要先验证是否漏行;清洗程序不能从已缺失的数据中恢复整条原文。

交付可重做的工作簿,并记录真实投入

交付 raw、clean、issues、规则版本和汇总说明,注明哪些公式需要接收人在目标应用内重算。抽样修改一个有效数量,确认对应金额与总计联动;再恢复原值、保存、重新打开。格式漂亮不能替代公式有效,CSV 也不能保留工作表、样式和公式结构。

每批分别记录规则设计时间、清洗执行时间、异常复核时间与返工次数,没有实际计时就不写节省比例。可复用的价值是下次按同一套规则重新算,而不是每周重新问模型一个合计。周期运行进入周报自动化,模型与工具调用成本以实时价格和实际记录为准。

常见问题

空值能统一补成 0 吗?

不能。0 表示已知数量为零,空值表示未知。本例 B003 必须待确认,补零会隐藏资料缺失。

为什么 TRIM 后看似重复的部门仍不同?

可能含不换行空格等不同字符。先确认字符来源,再按列制定替换规则,不要删除所有空白破坏名称。

同编号保留最新一行不就行了吗?

只有可靠的版本号或更新时间及明确业务规则才能判断最新。完全重复可以合并,字段冲突必须另行确认。

这里生成了可下载 Excel 文件吗?

本页提供教学数据、公式和自包含代码,没有交付或验证 XLSX 工作簿。需要在目标表格应用中建立副本、填公式并重算验收。

AI 写出的公式可以直接覆盖整列吗?

先在辅助列检查普通行、空值、重复与异常,再逐步扩大范围。保留原始列和公式版本,发现错误才能恢复。