WPS宏教程】一键拆分数据到独立工作簿 点击使用AI助手 了解更多

发布于 2024-11-15 liusiyang 3 编辑

【案例】以下是一张人员信息表,现在我们需要按照D列的村名将数据拆分为独立工作簿。

相当于下面这个会员功能:

现在我们用JS宏来免费实现这个功能,并且解决会员不能拆分多行标题的问题。

【操作效果】具体操作效果如下:

【代码】具体代码如下,可按ALT+F11打开WPS宏编辑器,复制下面的代码粘贴到编辑器中。

function 按内容拆分数据(){

Application.DisplayAlerts=false; //关闭提醒,防止拆分过程被打断

obj={}; //定义一个字典对象obj,用于存放文件标题

p=ThisWorkbook.Path + '/拆分/'; //拆分文件夹

th=ThisWorkbook.ActiveSheet;

t = parseInt(InputBox("请输入标题行数","标题行数",3)); //标题行数,接受用户输入

col=InputBox("请输入拆分列名","拆分列名",'d'); //拆分列名,接受用户输入

c = th.Range(col+'1').Column; //获取拆分列号

rn=th.Range('a'+Rows.Count).End(xlUp).Row; //最后一行数据行号

tg=Rows("1:"+t); //将标题区域写入单元格对象tg

ar=th.Range(col+(t+1)+':'+col+rn).Value2; //将关键列写入数组ar

ar.forEach(v=>obj[v]=v); //将拆分列写入字典对象obj,目的是去重

for(k of Object.keys(obj)){

let nw = Workbooks.Add(); //新建工作簿

let sh = nw.Sheets.Item(1); //新工作簿的第一张工作表

tg.Copy(sh.Range('a1'));

th.Range('a'+t).AutoFilter(c,k); //筛选数据

th.Range('a'+t).CurrentRegion.Offset(1,0).Copy(

sh.Range('a'+(t+1))); //复制筛选后的数据

nw.SaveAs(p + k + ".xlsx"); //保存表格

nw.Close(); //关闭表格

}

th.Range('a1').AutoFilter(); //取消筛选

Application.DisplayAlerts=true; //开启提醒

alert("拆分完成!"); //提示拆分完成

}

【素材下载】点击下方链接,下载文件本地文件夹,并在文件夹中新建一个名为“拆分”的文件夹。

https://kdocs.cn/l/cbyBlL3hoiCk

原文链接:https://bbs.wps.cn/topic/9384

上一篇: WPS从入门到熟练的快速指南
下一篇: WPS表格动态数组功能深度体验与应用案例分享
相关文章