如何批量合并多个同名工作簿并删除重复行?
WPS 2026 用数据→合并计算→删除重复,三步批量合并同名工作簿并去重,全程可审计。

功能定位:为什么“批量合并同名工作簿”值得单独聊
“批量合并同名工作簿并删除重复行”在 2026 Spring Refresh 的搜索热度居高不下,背后其实是基层合规报送与数据沉淀的刚性需求:每天收到十几份同名“日报.xlsx”,月底要把整月 sheet 拼成一张总表并去重留痕。WPS 表格同时提供本地与 WPS Air 云端两条合并路径,差异体现在审计日志粒度——本地仅记录文件级修改时间,云端可追溯到单元格级版本差异,方便事后溯源。
与 Microsoft Power Query 相比,WPS 的「数据→合并计算」入口更浅,且默认输出智能表格(Ctrl+T),后续可直接调用「深度洞察」做异常检测;代价是单次上限 255 个源文件,超出需分批次或改用 WPS Script 自动化。下文所有路径均以 Windows 桌面版 12.9.1.3689 为例,macOS 与 Linux 仅在快捷键上差异(Ctrl→⌘),移动端暂不支持批量合并,仅可查看结果。
方案 A:零代码「数据→合并计算」——适合一次性报送
操作路径(最短)
- 新建空白工作簿→「数据」选项卡→「合并计算」。
- 函数选求和(仅拼接可改“计数”),引用位置点击「浏览」批量选中需合并的同名文件。
- 勾选「首行」「最左列」标签匹配→确定。
- 合并后得到汇总区域,Ctrl+T 转换为智能表格→「数据→删除重复」→选择关键列(如“订单号”)→确认。
- 文件→另存为→「WPS Air 云端」→自动生成版本号,审计留痕完成。
为什么先转智能表格
2026 版开始,「删除重复」在普通区域默认灰显,官方解释是防止误删隐藏行。智能表格自带结构化边界,可跳过隐藏行与筛选状态,去重结果可预测,也便于后续透视分析。
方案 B:WPS Script 自动化——适合日更、量大
脚本模板(TypeScript 语法)
// 遍历文件夹内所有“日报.xlsx”
const fs = require('fs');
const path = './daily';
let arr = [];
fs.readdirSync(path).filter(f => f.endsWith('.xlsx')).forEach(file => {
let wb = Workbooks.Open(path + '/' + file);
let rg = wb.Sheets(1).UsedRange.Value2;
arr = arr.concat(rg.slice(1)); // 去掉表头
wb.Close(false);
});
// 去重逻辑:以第1列为主键
let map = new Map();
arr.forEach(row => map.set(row[0], row));
// 写回新簿
let out = Workbooks.Add();
out.Sheets(1).Range('A1').Resize(map.size, map.values().next().value.length).Value2 =
[['日期','订单号','金额'], ...map.values()];
out.SaveAs('./月度汇总.xlsx');
运行入口
「工具→WPS Script→新建脚本→粘贴→F5」。脚本会在本地生成执行日志(安装目录\logs\wps_script.log),每条记录含时间戳、文件 SHA-1、行数变化,满足信创环境审计要求。
例外与取舍:哪些场景不该用上述方案
1. 源文件含合并单元格:合并计算会强制拆解,导致格式错位。经验性观察:若表头存在纵向合并,去重后错位率约 30%。此时应改用「Power Query(若已装插件)」或手动整理。
2. 需要跨工作簿公式引用:合并计算仅搬运值,公式被丢弃。若后续还需追算,请保留源文件路径,改用「数据→获取数据→从文件夹」建立动态链接,但性能会随文件数线性下降。
3. 报送文件大于 5 GB:WPS Air 单文件上限 5 GB,超过后无法上传历史版本。此时应分片汇总或改用私有 WebDAV 存储,并在本地保留 SHA-1 校验文件以备审计。
监控与验收:如何证明“去重”没误删
可复现验证步骤
- 合并前,在源文件夹运行
certutil -hashfile *.sha1 > before.txt生成整体哈希。 - 合并去重后,把结果文件另存为 csv,再用
sort /unique做二次去重,对比行数差异应等于 WPS 提示的“已删除重复数”。 - 若差异 >0,说明 WPS 去重规则与系统 sort 不一致,常见原因是隐藏空格或不可见字符,可在结果列使用
=CLEAN(TRIM())清洗后再验证。
经验性观察:当关键列含不可断空格(CHAR(160))时,WPS 默认视为普通空格,而 Power Query 会视为不同字符,导致两边去重数不一致。若需绝对对齐,请先在「查找替换」里把 CHAR(160) 替换为常规空格。
性能与成本:本地 vs 云端
| 维度 | 本地合并 | WPS Air 云端 |
|---|---|---|
| 单批次上限 | 255 文件 | 100 文件/次,会员可扩 500 |
| 审计日志 | 文件级时间戳 | 单元格级版本链,支持国密 SM4 加密 |
| 速度(百行级) | 亚秒级 | 取决于上行带宽,经验性观察约 3–8 秒 |
| 合规成本 | 需自建备份 | 默认 1000 个历史版本,满足等保三级 |
故障排查:合并后格式全乱/数字变文本
现象:日期列变成 5 位数字。原因:合并计算默认把日期当序列号求和。处置:在「合并计算」函数下拉框改选计数,合并后再用「数据→分列→日期格式」一次性纠正。
现象:货币符号丢失。原因:源文件使用自定义格式 "¥"#,##0,合并计算仅搬运值。处置:合并后统一设置单元格格式,或使用 WPS Script 在搬运时同步复制 Range.Copy 的 PasteFormat 参数。
与第三方机器人协同(可选)
若企业已部署「第三方归档机器人」监听邮箱,可把日报.xlsx 自动转存到指定 NAS。WPS Script 通过 SMB 协议轮询该目录即可实现无人值守合并。权限最小化原则:机器人账号仅授予「读取+删除」源文件权限,禁止写入,防止循环触发。
适用/不适用场景清单
- ✅ 基层单位每日收集 10–200 个同名报表,需 T+1 报送省平台。
- ✅ 财务月结需把 30 个子公司同名预算表合并,关键列“预算编号”唯一。
- ❌ 源文件含动态数组公式(如 FILTER、XLOOKUP),合并后公式断裂。
- ❌ 需要保留水印、批注、打印区域等富格式,合并计算会全部丢弃。
最佳实践 6 条检查表
- 合并前统一把源文件转换为 XLSX,避免老格式兼容警告。
- 关键列命名务必一致,多余空格用「查找替换」提前清理。
- 先复制一份源文件夹,执行「只读」属性,防止合并过程中文件被他人修改。
- 合并后立即生成 SHA-1 并写入文件名后缀,方便事后比对。
- 若报送周期大于 30 天,启用 WPS Air「版本分支」功能,避免 1000 个历史点被滚动覆盖。
- 脚本自动化场景,设置 Windows 任务计划「仅在 AC 电源下执行」,防止笔记本休眠中断。
FAQ(使用 FAQPage Schema)
合并计算为何提示“文件受保护”?
源文件如启用「限制编辑」,需先点击「审阅→停止保护」或输入密码,否则无法读取数据区域。
删除重复后想找回被删行怎么办?
若文件保存在 WPS Air,可在「历史版本」里回滚;本地文件需提前启用「文档医院」自动备份,否则无法恢复。
脚本运行报「TypeError: Workbooks 未定义」?
WPS Script 需在最上方加 /// <reference path="wps.d.ts" /> 声明,且确保在「表格」模块内运行,而非文字或演示。
收尾:下一步行动建议
如果你今天就要交报表,直接用「数据→合并计算」最稳;当同名文件每天新增且数量过百,花 10 分钟改 WPS Script,后续点击一次即可下班。无论哪种方案,合并后立刻生成哈希、写日志、传云端,让审计不再只是“口头承诺”。现在就打开 WPS,按检查表跑一遍,你会发现批量合并同名工作簿并删除重复行,其实比手动复制粘贴更省心,也更安全。
