WPS宏实现一个表格拆分成多个表格的功能

2024-08-22 06:44

本文主要是介绍WPS宏实现一个表格拆分成多个表格的功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

把首列名称中一样的分别创建该名称+时间戳的新表格,比如有个表格存储各个省的信息,江苏的有50行数据,山西的55行数据等等,这个就是把江苏的创建一个新表保存,山西的创建一个新表格保存。里面主要是表格的创建与关闭相关知识,还有动态给表格对象赋值,实现循环操作表格的目的。

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);
    
    //D盘下面创建名为test的文件夹
    var folderPath = "C:\\test";
    
    while(Dir(folderPath +"\\*.*") != ""){
    Kill(folderPath + "\\*.*");    
    }
    
    if(Dir(folderPath,16)!=""){
        RmDir(folderPath);
        alert("test文件已存在,已执行删除后重建");
        MkDir(folderPath);
    }else{
        MkDir(folderPath);
    }
    
    //遍历Sheet2页值创建其余表格
    var st2lastRow = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row;
    var workObjects = {};
    for(var z = 0; z<st2lastRow-1;z++){
        var sheet2Range2ItemValue = ws2.Cells(z+2, 1).Value2;
        var newWork = Workbooks.Add();
        var date = new Date().toLocaleString();
        var date1 = date.split(" ");
        var date2 = date1[0].replace(/\//g, ".");
        newWork.SaveAs(folderPath+"\\"+sheet2Range2ItemValue+"_"+date2+".xlsx");
        workObjects[sheet2Range2ItemValue] = newWork;    
    
    //Sheet1页复制到其他表格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(workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Cells(1, 1));

    
    //获取其他页数据及地址
    var arrow = new Array();
    var st5LastRow = workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Cells(workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").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 = workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Range("A"+arrow[x]).Value2;
        var b = workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").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]!= "地市"){
            workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Range(array[1]).EntireRow.Clear();
            }
        }
    
    var st5LastRow1 =workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Cells(workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row;
    for(let y = st5LastRow1; y>0; y--){
        if(Application.WorksheetFunction.CountA(workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Rows(y))==0){
            workObjects[sheet2Range2ItemValue].Worksheets("Sheet1").Rows(y).Delete();    
        }
        }
        //关闭表格
        newWork.Close(true);
    }    
    //删除源表格Sheet2页,设置不弹出是否删除的提示框,执行删除完毕后开启
    Application.DisplayAlerts = false;
    ws2.Delete();
    Application.DisplayAlerts = true;
}

这篇关于WPS宏实现一个表格拆分成多个表格的功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095531

相关文章

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1