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 = date10.replace(/\//g, ".");

newWork.SaveAs(folderPath+"\\"+sheet2Range2ItemValue+"_"+date2+".xlsx");

workObjectssheet2Range2ItemValue = 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(workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Cells(1, 1));

//获取其他页数据及地址

var arrow = new Array();

var st5LastRow = workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Cells(workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row;

for(var j = 0 ; j < st5LastRow ; j++){

arrowj=j+1;

}

var arrow1 = new Array();

for (let x = 0; x < arrow.length; x++) {

var a = workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Range("A"+arrowx).Value2;

var b = workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Range("A"+arrowx).Address();

arrow1.push(a+":"+b);

}

//遍历删除各个地市

for(let i = 0;i<arrow1.length;i++){

array = arrow1i.split(':');

if(array0 != sheet2Range2ItemValue && array0!= "地市"){

workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Range(array1).EntireRow.Clear();

}

}

var st5LastRow1 =workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Cells(workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row;

for(let y = st5LastRow1; y>0; y--){

if(Application.WorksheetFunction.CountA(workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Rows(y))==0){

workObjectssheet2Range2ItemValue.Worksheets("Sheet1").Rows(y).Delete();

}

}

//关闭表格

newWork.Close(true);

}

//删除源表格Sheet2页,设置不弹出是否删除的提示框,执行删除完毕后开启

Application.DisplayAlerts = false;

ws2.Delete();

Application.DisplayAlerts = true;

}

相关推荐
吃糖的小孩25 分钟前
从只读页面到可控真实探针:我如何给 Owner Console 加手动诊断
前端
谷无姜25 分钟前
为什么你的性能优化无效?可能是"木桶效应"在作祟
前端·性能优化
雾非雾29 分钟前
《基于具身交互智能数字人技术:如何打造AI数字人宣讲平台"红厅智播”》
前端
Revolution6138 分钟前
一段 JavaScript 代码执行时,到底发生了什么
前端·javascript
智能起源39 分钟前
关于元素层级过多,导致压祯的问题(使用winform或者WPF应用的webview组件嵌套网页时,动效卡顿问题)
前端
Old Uncle Tom1 小时前
银行用户画像 -- 金融目标与需求意图
前端·人工智能·金融
IT_陈寒1 小时前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端
东方小月1 小时前
从0开发一个 Coding Agent(一):前言
前端·人工智能·typescript
恋猫de小郭2 小时前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter