
10份文件、10万行收银数据,如何一键合并查重?
WorkBuddy 写 VBA,Excel 在本地批量处理
案例结论
10 份 CSV 、共 100,000 行,最终保留 97,000 条,查出 3,000 条重复,0 条冲突,并自动生成门店日报。
关键词:WorkBuddy · VBA · 十万行 · 文件合并 · 重复流水 · 门店日报
01 为什么不把 10 万行数据直接交给 AI?
真实业务中,商超每天都会导出收银流水。当 10 家门店累积到 10 万行时,手工复制粘贴不仅慢,还容易遇到列顺序不同、重复导出、退货金额与销售金额混合等问题。
如果把整批明细反复上传给 AI,传输量、上下文限制、隐私和重复成本都不理想。更适合的做法是:让 AI 阅读规则、表头和少量样例,由 WorkBuddy 生成 VBA 代码;真正的 10 万行数据始终在 Excel 本地计算。
一句话思路
AI 负责“写工具”,VBA 负责“跑大数据”。代码写好后,换一批数据只要点击按钮,无需再次询问 AI。

图 1:10 份收银文件就绪,开场直接突出“10万行”。
02 案例最终完成了什么?
| 指标 | 实测结果 | 用途 |
|---|---|---|
| 输入流水 | 100,000 行 | 10 份 CSV 合并 |
| 保留记录 | 97,000 条 | 作为后续汇总主数据 |
| 重复流水 | 3,000 条 | 单独列出,可追溯来源 |
| 冲突记录 | 0 条 | 相同流水号内容不一致时报警 |
| 净实收 | 13,825,461 元 | 与门店日报合计一致 |
| 日报组数 | 310 组 | 按门店 + 营业日期汇总 |
除了主结果,代码还会生成“导入清单”、“合并明细”、“重复记录”、“冲突记录”和“门店日报”。每条数据保留来源文件和原始行号,一旦发现异常,可以立即回到源文件核对。

图 2:控制台清晰显示输入、保留、重复和冲突四项核心指标。
03 零基础也能说清楚的提示词
这个案例的重点不是先学会 VBA 语法,而是先把自己想要的业务结果说清楚。WorkBuddy 会自动阅读当前项目中的说明、表头和少量样例,然后把自然语言转成可执行的 VBA 代码。
本案例提示词
请使用 VBA 相关技能完成以下任务,不做窗体。10 家超市给我 10 份收银文件,共 10 万行,列顺序不一样,还有重复导出的流水。请先看当前工作簿的案例说明、表头和少量样例,按规则合并文件、列出重复记录,再汇总各门店每天的实收和退货。保留来源文件和行号,别改原数据。用高效方法批量处理,加一个开始处理按钮,以后换数据还能用。显示真实耗时,自动核对行数和金额,重复运行别叠加旧结果。运行宏请用 VBAYYDS CLI。

图 3:提示词在视频中放大展示,零基础用户也能直接照着说。
04 WorkBuddy + VBAYYDS 的完整流程
- 打开工作簿和 VBA 编辑器,通过 VBAYYDS 语音编程助手复制当前项目路径。
- 在 WorkBuddy 中加入该项目,让 AI 能读取工作簿说明、表头和样例。
- 用日常语言说出需求:合并 10 份文件、检查重复、保留来源、生成日报。
- WorkBuddy 编写 VBA 并根据实际数据结构完善容错、清理和校验逻辑。
- 用 VBAYYDS CLI 运行宏,输出合并明细、重复记录、冲突记录和门店日报。
- 核对行数、金额平衡与日报合计;确认通过后,后续只需更换数据并点击按钮。
三样工具,各自负责什么?
Excel / WPS 负责保存数据、运行 VBA 和展示结果;WorkBuddy 负责理解需求、阅读项目并写代码;VBAYYDS 负责连接 VBA 项目、复制路径,并通过 CLI 运行宏。

图 4:在 VBA 编辑器中调用 VBAYYDS 语音编程助手。
05 10 万行也能跑得稳:代码里的高效思路
大数据处理最忌讳的是“一个单元格一个单元格地读写”。本案例把绝大多数计算放到内存数组和字典中,最后再一次性写回工作表。
- 先读取每个 CSV 的表头,再建立列名映射,因此不怕列顺序改变。
- 预先统计总行数,一次性 ReDim 主数组,避免频繁 ReDim Preserve。
- 用 Scripting.Dictionary 保存流水号和完整签名,快速区分“重复”与“冲突”。
- 按“门店 + 营业日期”在内存中汇总销售笔数、退货笔数和净实收。
- 运行期间关闭 ScreenUpdating 和事件触发,完成后再恢复,减少界面刷新开销。
- 每次运行前先清理本案例的结果表,所以重复点击不会叠加旧数据。
Set dicSig = CreateObject("Scripting.Dictionary")
Set dicKeep = CreateObject("Scripting.Dictionary")
ReDim retained(1 To 输入行数, 1 To 12)
ReDim dupArr(1 To 输入行数, 1 To 15)
ReDim conflictArr(1 To 输入行数, 1 To 15)

图 5:最终 VBA 代码中的批量数组与字典处理。
06 结果不只要“有”,还要可核对
对财务和收银类数据来说,跑出一张汇总表还不够。本案例在控制台中同时做三层验证:行数平衡、冲突数核对、金额等式检查。
- 行数:100,000 = 97,000 + 3,000 + 0。
- 金额:输入金额 = 保留金额 + 重复金额 + 冲突金额。
- 日报:保留数据的净实收 = 门店日报合计。
- 追溯:每条保留、重复或冲突记录都带有来源文件和原始行号。

图 6:合并明细保留来源文件和原始行号,异常数据可回溯。

图 7:门店日报一次生成,销售、退货和净实收同表呈现。
07 以后换数据,只要点一下
一次性询问 AI 只能得到一次结果;而把逻辑固化到 VBA 里,得到的是一个可重复使用的本地工具。后续只要将新的收银文件放入指定文件夹,打开工作簿,点击“开始处理”,结果表就会自动刷新。
实际耗时
本次录屏环境的控制台显示约 19.55 秒。实际速度会受磁盘、Excel/WPS 版本、CPU 和 CSV 内容复杂度影响,但高效数组与字典结构可以避免随数据量增长出现明显的界面卡顿。
这也是 WorkBuddy + VBAYYDS 语音编程最有价值的地方:你不必先成为 VBA 专家,先用自然语言把业务需求说清楚,再让 AI 帮你把需求变成一个能反复使用的 Excel 工具。
08 学会这个案例,还能迁移到哪些场景?
| 行业 | 可迁移的任务 |
|---|---|
| 连锁零售 | 门店日销售合并、退货核对、收银对账 |
| 仓储物流 | 多仓进销存合并、重复单号检查、库龄汇总 |
| 生产制造 | 设备运行日志合并、异常记录去重、班次汇总 |
| 电商客服 | 订单、售后、退款文件合并及店铺日报 |
| 财务共享 | 银行流水整理、发票号查重、金额平衡检查 |
最后的记忆点
说清需求,让 WorkBuddy 写 VBA;数据在 Excel 本地跑;代码写一次,按钮反复用。
— 完 —

