【WPS应用案例】按照内容拆分工作表,免费实现会员功能 | 您所在的位置:网站首页 › 筛选拆分表格 › 【WPS应用案例】按照内容拆分工作表,免费实现会员功能 |
【案例】以下是一张人员信息表,现在我们需要按照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 |
CopyRight 2018-2019 实验室设备网 版权所有 |