如何快速将一个Excel表格里面的数据,拆分成多个sheet表呢?今天给大家讲一个在WPS中使用JS宏的实现方法,先看效果:
上面的动图展现的是使用JS宏,一键按部门拆分员工数据到 sheet 表,并将 sheet 表名显示为“所属部门”的名称,下面我们来看下具体怎么来做。
1、新建 JS 宏
点击“工具”-“WPS 宏编辑器”进入到 JS 宏编辑器弹框;
复制代码到“代码区”,代码过长下面仅展示部分,评论区回复“666”领取完整代码;
function SplitDataByDepartment() {
try {
const workbook = Application.ActiveWorkbook;
const sourceSheet = workbook.Sheets.Item("员工数据");
const departmentCol = 3; // C列(部门列)
// 删除旧部门表(保留员工数据表)
const sheets = workbook.Sheets;
let deleteSheets = [];
for (let i = 1; i <= sheets.Count; i++) {
const sheet = sheets.Item(i);
if (sheet.Name !== "员工数据") {
deleteSheets.push(sheet);
}
}
// 逆序删除避免索引错误
deleteSheets.reverse().forEach(sheet => sheet.Delete());
// 获取部门列表
const lastRow = sourceSheet.UsedRange.Rows.Count;
const departments = new Set();
for (let i = 2; i <= lastRow; i++) {
departments.add(sourceSheet.Cells.Item(i, departmentCol).Value2);
}
// 创建部门分表
departments.forEach(dept => {
// 代码已收拢
}
// 自动调整列宽
newSheet.Columns("A:D").AutoFit();
});
// 激活原始表
sourceSheet.Activate();
Application.Alert(`数据拆分完成,共创建${departments.size}个部门分表`);
} catch (e) {
console.error("错误详情:", e);
}
}
注意:可以通过修改列或者表名来适配不同的数据表
const sourceSheet = workbook.Sheets.Item("员工数据");
const departmentCol = 3; // C列(部门列)
运行 JS 宏
编辑并保存好代码,JS 宏已经设置完成,接下来点击“工具”-“运行宏”看看效果吧。
运行成功后就可以看到,底部新增了 5 个 sheet,分别以所属部门命名。
好了,今天的分享就到这里了,如果你觉得有用,请点赞支持一下!我会持续分享更多实用干货~
作者:荣哥,原百度产品经理,专注办公实用技能及AI提效实战分享,如果有任何想要的内容,欢迎随时私信我安排~。