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路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清