肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

WPS隐藏神技!Excel数据1秒按部门拆表,这个JS宏代码我求到了!


如何快速将一个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提效实战分享,如果有任何想要的内容,欢迎随时私信我安排~。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言