夜雨聆风学习资料网

ARTICLE · 1075434

用WorkBuddy制作按部门拆分Excel文件工具-正式版

用WorkBuddy制作按部门拆分Excel文件工具
Excel VBA 靠嘴编程实战 · VBA-0066
一张员工名单要发给几个部门,常见做法是筛选一个部门、复制到新工作簿、保存,再换下一个部门。名单更新后,还得重新做一遍。这个案例把这些重复操作做成工作表上的“按部门拆分”按钮。
我们用 WorkBuddy 配合 VBAYYDS语音编程,让 AI 读取工作簿、编写 VBA、写入工程并运行。演示数据共 20 人,最终得到 5 份部门名单和 1 份导出清单。再次运行会建立新的批次目录,方便保留历史结果。
本篇重点看三个问题:怎样把需求说清楚,AI 生成的代码做了什么,以及怎样判断拆分结果正确。案例使用 WPS 表格中的 VBA 环境,数据均为虚构演示数据,不涉及真实员工信息。
先准备员工名单和拆分规则
原始工作簿保留为支持宏的 XLSM 文件。“员工名单”第 4 行是表头,第 5 行开始存放数据,字段包括员工编号、姓名、部门、岗位、入职日期、办公地点和备注。员工编号按文本保存,因此 0001、0005 这样的前导零不能丢失。
原始名单包含空部门和部门首尾空格等情况
这次不做窗体,只在工作表上放一个执行按钮。各部门输出为独立的 XLSX 文件,保留表头和原有格式;部门为空的记录仍要保留,统一归到“未分配”。部门首尾空格只影响分组判断,不应该把同一部门拆成两份。
“拆分规则”表用于向 AI 交代业务要求。它相当于这次开发的说明书,并不意味着生成的宏会在每次运行时动态读取所有规则。后续如果改变表名、表头位置或分组字段,应让 AI 同步修改代码,再用副本测试。
先把这些边界说清楚,比只说“帮我按部门拆表”更容易得到可用的工具。至于最终有多少组、每组多少人,应该由实际数据计算出来,不需要在首次提问时预先写死答案。
把项目交给WorkBuddy并说明需求
在 WPS 中进入 VBA 编辑器并最大化,展开 VBAYYDS 菜单,点击“复制项目路径”。当前插件会在复制路径时自动导出 VBA 工程,不必再单独执行一次导出。
切到 WorkBuddy,点击“新建任务”,在“选择工作空间”中打开本地文件夹,粘贴刚复制的项目路径。确认当前任务关联的是这个工程后,再输入需求。提示词也可以用语音输入;口述完成后,检查表名和文件夹名有没有识别错。
下面是本次使用的首轮提示词原文,仅按阅读需要分段。
请读取 VBA 技能和当前工作簿。我想把“员工名单”按部门拆成多个独立的 Excel 文件,每个部门 1 个,保留表头、员工编号和原有格式。
请在工作表上添加“按部门拆分”按钮,不做窗体。部门名称前后的空格忽略,部门没填的归到“未分配”。输出放到当前工作簿旁的“部门拆分结果”文件夹,每次新建一个批次目录,不覆盖以前的文件。
完成后生成“导出清单”,列出部门、人数和文件路径。具体按“拆分规则”表处理,使用“清爽蓝白(office-clean)”主题。请直接写入并运行 VBA,检查生成的文件是否正确。
WorkBuddy 中输入本次需求并关联项目工作空间
提示词为什么这样写
第一段交代数据在哪、按什么拆、拆成什么。这里特别写出“独立的 Excel 文件”,避免 AI 只在原工作簿里新增几个工作表。“保留员工编号”则提醒它注意编号的文本属性,不能把 0001 保存成 1。
第二段说明使用方式和容易出错的边界。按钮让日常操作有明确入口;空部门归入“未分配”避免漏人;按批次新建目录则解决重复运行时的文件覆盖问题。这些都是普通用户能够描述的业务要求,不需要先告诉 AI 使用哪一种算法。
第三段要求交付可核对的清单,并明确“直接写入并运行”。这样本次任务的终点是可运行的工具和输出文件,而不只是聊天窗口里的一段代码。具体人数仍应根据原始数据核对,不能只看到 AI 回复“完成”就结束。
WorkBuddy 返回 VBA 模块和文件核对记录
本次执行记录中包含 VBA 模块与核对文件,检查了各部门人数、表头、员工编号和日期格式。我们还打开了实际输出工作簿,确认结果能够正常阅读。截图左侧的额外功能建议属于后续可选项,并不是本案例已经实现的功能。
代码里值得认识的四个做法
第一,先分组再生成文件。代码读取部门名称,用 Trim$ 去掉首尾普通空格,空值改为“未分配”,再把各行的行号收集到对应部门。这里用到字典 Scripting.Dictionary 和集合 Collection:字典找到部门,集合记住属于这个部门的记录。
VBA 编辑器中的部门归组代码片段
第二,复制表头和记录时保留格式。每个新工作簿只保留一张“员工名单”表,原表头复制到第 1 行,数据从第 2 行写入。代码使用区域复制并设置列宽,员工编号列设为文本。这里验证了编号和日期;不要据此推断任何复杂表格样式都已经测试过。
第三,每次建立一个新批次。代码在源文件旁创建“部门拆分结果”文件夹,再使用日期时间生成批次目录。目录重名时追加序号,部门文件名中的非法字符会替换为下划线,避免直接拿业务名称作为文件名时出错。
第四,让按钮调用同一个入口宏。“按部门拆分”按钮绑定宏 m部门拆分.按部门拆分。代码会先查找同名按钮,存在就不重复添加。按钮不重复创建,不等于导出操作只执行一次;每次点击都会产生新批次。
零基础学习时,先理解这四件事就够了。具体代码由 AI 写入和运行,自己需要掌握的是数据含义、输出要求,以及检查结果的方法。
从输出文件核对本次结果
本次样例拆出了销售部 6 人、研发部 5 人、生产部 4 人、行政部 3 人,以及未分配 2 人,共 20 人。人数合计与原始名单一致。核对记录还显示,各部门文件的表头、编号前导零、日期值和日期显示格式通过了检查。
批次目录中的五份部门名单和一份导出清单
一个批次里有 6 个工作簿,并不表示有 6 个部门:其中 5 个是部门名单,另一个是“导出清单.xlsx”。清单列出部门、人数、文件名、文件路径和状态,便于找到每份文件。源工作簿内的“导出清单”显示最新一次结果,历史批次目录仍单独保留。
检查自己的数据时,可以从总人数、各组人数和员工编号入手。总数一致只是第一步,还应抽查是否有人被分到错误部门,并查看空部门的记录有没有丢失。文件能保存,也不代表文件内容一定正确。
这次流程还演示了再次点击按钮后生成新批次。用于正式业务前,建议先在副本中测试目录无权限、文件名冲突和异常数据等情况。本篇展示的是这份演示数据的结果,不是对所有业务场景的保证。
打开名单后再考虑复用
在 WPS 中实际打开生成的销售部名单
实际打开销售部文件,可以看到 6 条销售记录,员工编号仍显示为 0001、0005 等文本编号,表头和日期可以正常阅读。原始部门中带首尾空格的记录也归入了销售部。当前逻辑只清理分组键,复制出的原始部门文本仍可能保留空格;如果还要清理输出内容,需要另外提出要求。
把这个案例迁移到“按客户拆订单”“按区域拆销售明细”时,可以参考下面的提问模板。它是便于改用的模板,不是本次录制时的实际提问。
请读取当前工作簿,把【数据表名称】按【分组字段】拆成独立的 Excel 文件,每组一个。保留【需要保留的字段和格式】,分组为空时按【空值处理规则】处理。在工作表添加【按钮名称】按钮,输出到当前文件旁的【结果文件夹】,每次建立新批次,不覆盖历史文件。生成包含分组、记录数、文件路径和状态的清单。请写入并运行 VBA,核对输出是否符合原始数据和业务规则。
替换括号内容时,优先检查数据表结构是否也变了。本案例把表头位置、部门列和编号列写在代码中,并不会因为工作表上换了一个标题就自动理解新结构。如果新数据含全角空格、不间断空格、合并单元格或公式,也需要补充说明并测试。
你可以从一个熟悉的重复操作开始练习:把需求说清楚,让 AI 实现,再打开结果验证。确认正确后,下次更新名单就可以使用工作表按钮继续处理。

VBAYYDS学员的19个办公自动化故事 这才是真正的AI赋能

工具名称:VBAYYDS语音助手
适合人群:常用Excel且希望自动化操作但不想深学VBA的职场人
体验方式:下载地址vbayyds.com
✨ 让Excel听懂你的需求,或许只需要一次尝试。
✨ 你的时间,值得用在更值得的事情上。

相关学习资料