当前位置: 首页 > news >正文

WPS宏实现Sheet页拆分功能

源表格首列名称中一样的分别创建该名称的Sheet页,首先把首列复制导致Sheet2页,根据去重后的值创建新的Sheet页,把源表格数据复制到新建的Sheet页,遍历删除不需要的留下需要的就完成了。

function JIn521() {
    
    //设置工作表对象
    var ws1 = ThisWorkbook.Worksheets('Sheet1');
    //Sheet1页首列复制到Sheet2页并去重
    var lastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row;
    var sheet1Range1 = ws1.Range(ws1.Cells(1, 1), ws1.Cells(lastRow, 1));
    Worksheets.Add();
    ActiveSheet.Name = "Sheet2"
    var ws2 = ThisWorkbook.Worksheets('Sheet2');
    sheet1Range1.Copy(ws2.Cells(1, 1));
    ws2.Columns(1).EntireColumn.RemoveDuplicates(1, xlYes);
    
    //遍历Sheet2页值创建其余Sheet页
    var st2lastRow = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row;
    var worksheetObjects = {};
    for(var z = 0; z<st2lastRow-1;z++){
        var sheet2Range2ItemValue = ws2.Cells(z+2, 1).Value2;
        var newWorksheet = Worksheets.Add();
        newWorksheet.Name = sheet2Range2ItemValue;
        worksheetObjects[sheet2Range2ItemValue] = newWorksheet;    
    
    //Sheet1页复制到其他页
    var lastCol = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column;
    var sheet1Range2 = ws1.Range(ws1.Cells(1,1),ws1.Cells(lastRow,lastCol));
    sheet1Range2.Copy(worksheetObjects[sheet2Range2ItemValue].Cells(1, 1));

    
    //获取其他页数据及地址
    var arrow = new Array();
    var st5LastRow = worksheetObjects[sheet2Range2ItemValue].Cells(worksheetObjects[sheet2Range2ItemValue].Rows.Count, 1).End(xlUp).Row;
    
    for(var j = 0 ; j < st5LastRow ; j++){
         arrow[j]=j+1;
    }
    
    var arrow1 = new Array();
    
    for (let x = 0; x < arrow.length; x++) {
        var a = worksheetObjects[sheet2Range2ItemValue].Range("A"+arrow[x]).Value2;
        var b = worksheetObjects[sheet2Range2ItemValue].Range("A"+arrow[x]).Address();
        arrow1.push(a+":"+b);
        }
        
    //遍历删除
    for(let i = 0;i<arrow1.length;i++){
        array = arrow1[i].split(':');
        
        if(array[0] != sheet2Range2ItemValue && array[0]!= "地市"){
            worksheetObjects[sheet2Range2ItemValue].Range(array[1]).EntireRow.Clear();
            }
        }
    
    var st5LastRow1 =worksheetObjects[sheet2Range2ItemValue].Cells(worksheetObjects[sheet2Range2ItemValue].Rows.Count, 1).End(xlUp).Row;
    for(let y = st5LastRow1; y>0; y--){
        if(Application.WorksheetFunction.CountA(worksheetObjects[sheet2Range2ItemValue].Rows(y))==0){
            worksheetObjects[sheet2Range2ItemValue].Rows(y).Delete();    
        }
        }
    }    
    //删除源表格Sheet2页,设置不弹出是否删除的提示框,执行删除完毕后开启
    Application.DisplayAlerts = false;
    ws2.Delete();
    Application.DisplayAlerts = true;
}

http://www.lryc.cn/news/430314.html

相关文章:

  • 【图像超分】论文精读:AdaBM: On-the-Fly Adaptive Bit Mapping for Image Super-Resolution
  • 深信服应届生客户经理面试经验分享
  • 什么是应用交付控制器(ADC)
  • 旅游管理系统
  • AVI-Talking——能通过语音生成很自然的 3D 说话面孔
  • 走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现
  • leetcode118. 杨辉三角,老题又做
  • 进程(一)(22)
  • Excel“取消工作表保护”忘记密码并恢复原始密码
  • WPS关闭后,进程依然在后台运行的解决办法
  • SQL每日一练-0816
  • 直方图均衡化
  • Golang | Leetcode Golang题解之第342题4的幂
  • 数学建模学习(116):全面解析梯度下降算法及其在机器学习中的应用与优化
  • [mysql][sql]mysql查询表大小
  • 8.16 mysql主从数据库(5.7版本)与python的交互及mycat
  • 项目问题 | CentOS 7停止维护导致yum失效的解决办法
  • 【Docker】Docker Compose(容器编排)
  • 嵌入式初学-C语言-二九
  • 0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现
  • 【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1
  • 魔法糖果工厂
  • NVM安装管理node.js版本(简单易懂)
  • 第1章-04-Chrome及Chrome Driver安装及测试
  • 【Linux】SSH 隧道转发场景搭建
  • 前后端部署-服务器linux中安装数据库Mysql8
  • 如何使用jd-gui对springboot源码进行分析
  • 原来ChatGPT是这么评价《黑神话:悟空》的啊?
  • C语言第17篇
  • Springboot+vue实现webScoket