一键合并Excel工作表的JS宏教程 点击使用AI助手 了解更多

发布于 2024-11-09 liusiyang 59 编辑

题目:

在一个工作簿中有多张工作表,每个工作表的列数相同,格式相同,但行数不同。要求将工作表合并在一起,并且只保留第一张工作表的标题,其它工作表只要数据部分,同时在合并后的数据前面插入一列工作表名称,以便能追溯数据来源于哪张工作表。

  • 原数据如下:

  • 合并后的数据如下:

下面,就让我们用JS宏来实现一键合并功能。

  • 第一步:在“开发工具”选项卡中点击“WPS宏编辑器”。

  • 第二步:在WPS宏编辑器中点击插入菜单,插入一个模块,并输入以下代码。

// 定义一个名为"合并工作表"的函数。

function 合并工作表(){

// 创建一个空数组,用于存储从各个工作表中获取的数据。

let data=[]

// 获取名为"合并"的工作表。

let tsh=Sheets.Item('合并')

// 初始化一个变量i为1。这个变量用于判断合并到第几张工作表了,以便确定是否删除标题行

i=1

// 对所有的工作表进行遍历。

for(sh of Sheets){

// 如果当前工作表的名字不是"合并"工作表的名字...

if(sh.Name!=tsh.Name){

// 获取当前工作表的一个区域(从A1开始并且包括其周围的连续区域),并将其值存储到ar变量中。

ar=sh.Range('a1').CurrentRegion.Value2

// 如果i大于1,则从数组ar中删除1行,因为本例中只有一行标题,所以是splice(0,1),如果有n行标题,那就是splice(0,n)

if(i>1) ar.splice(0,1)

// 在数组ar的前面新增一列,存放每个工作表的工作名称,并将数据写入新数组br。

br=ar.map((col)=>[sh.Name,...col])

// 将br数组中的所有元素添加到data数组中,每循环一次,就写入一次,即实现了数据合并。

data=data.concat(br)

// 增加i的值,表示我们已经处理完一个工作表。

i++

}

}

// 将data数组的第一行的第一个元素(即索引为0的元素)设置为'工作表名称'。

data[0][0='工作表名称']

// 将"合并"工作表的A1单元格及其周围区域的大小调整为data数组的长度和第一行的元素数量,并将data数组的值赋给这个区域。

tsh.Range('a1').Resize(data.length,data[0].length).Value2=data

}

  • 请看运行效果:

原文链接:https://bbs.wps.cn/topic/8693

上一篇: WPS从入门到熟练的快速指南
下一篇: 提升WPS文档排版效率:自定义编号技巧揭秘
相关文章