7-9 WPS JS宏 对象使用实例6:按条件读取多表再拆成多表

7-9 WPS JS宏 对象使用实例6:按条件读取多表再拆成多表

对象使用实例6:按条件读取多表再拆成多表

原数据:

结果:

代码:

function 跨表合并拆分() {

var mergedData = {}; //创建空对象

//获取所有表名

// var sheets = ["1月", "2月", "3月"]; //目标工作表名

//与上方代码功能同样,只是方法不同,仅供参考

//起点

var sheets = [];

for (var name1 of ThisWorkbook.Sheets){

sheets.push(name1.Name)

}

//结束

//数据分类排序

sheets.forEach(sheetName => {

var sheet = Sheets(sheetName);

var data = sheet.Range("A2:B" + sheet.Range("A1").End(xlDown).Row).Value();

data.forEach(row => {

var product = row[0];

if (!mergedData[product]) {

mergedData[product] = [];

}

mergedData[product].push([sheetName, row[1]]);// 添加键:sheetName,值:row[1]月份数据

});

});

// 创建新工作簿写入数据

var newWb = Workbooks.Add();

Object.entries(mergedData).forEach(([product, data]) => {

var ws = newWb.Sheets.Add();

ws.Name = product;

ws.Range("A1","B1").Value2 = ["月份", "销售额"];

ws.Range("A2").Resize(data.length, 2).Value2 = data;

});

//删除无用表

newWb.Sheets("Sheet1").Delete();

//与上方代码功能同样,只是方法不同,仅供参考

//newWb.Sheets(newWb.Sheets.Count).Delete()

}

javascript 复制代码
//7-9 WPS JS宏 对象使用实例6:按条件读取多表再拆成多表
function 跨表合并拆分() {
  var mergedData = {};  //创建空对象
  
//获取所有表名
//  var sheets = ["1月", "2月", "3月"];  //目标工作表名
  //与上方代码功能同样,只是方法不同,仅供参考
//起点
  var sheets = []; 
  	for (var name1 of ThisWorkbook.Sheets){
		sheets.push(name1.Name)
	}
//结束
  
//数据分类排序
  sheets.forEach(sheetName => {
    var sheet = Sheets(sheetName);
    var data = sheet.Range("A2:B" + sheet.Range("A1").End(xlDown).Row).Value();
    
    data.forEach(row => {
      var product = row[0];
      if (!mergedData[product]) {
        mergedData[product] = [];
      }
      mergedData[product].push([sheetName, row[1]]);// 添加键:sheetName,值:row[1]月份数据
    });
  });

  // 创建新工作簿写入数据
  var newWb = Workbooks.Add();
  Object.entries(mergedData).forEach(([product, data]) => {
    var ws = newWb.Sheets.Add();
    ws.Name = product;
    ws.Range("A1","B1").Value2 = ["月份", "销售额"];
    ws.Range("A2").Resize(data.length, 2).Value2 = data;
  });
  
  //删除无用表
	newWb.Sheets("Sheet1").Delete();
	//与上方代码功能同样,只是方法不同,仅供参考
  //newWb.Sheets(newWb.Sheets.Count).Delete()
}
相关推荐
摘星编程6 小时前
OpenHarmony + RN:Placeholder文本占位
javascript·react native·react.js
a1117766 小时前
医院挂号预约系统(开源 Fastapi+vue2)
前端·vue.js·python·html5·fastapi
0思必得06 小时前
[Web自动化] Selenium处理iframe和frame
前端·爬虫·python·selenium·自动化·web自动化
行走的陀螺仪8 小时前
uni-app + Vue3编辑页/新增页面给列表页传参
前端·vue.js·uni-app
摘星编程9 小时前
React Native + OpenHarmony:Spinner旋转加载器
javascript·react native·react.js
We་ct9 小时前
LeetCode 205. 同构字符串:解题思路+代码优化全解析
前端·算法·leetcode·typescript
2301_8127314110 小时前
CSS3笔记
前端·笔记·css3
ziblog10 小时前
CSS3白云飘动动画特效
前端·css·css3
越努力越幸运50810 小时前
CSS3学习之网格布局grid
前端·学习·css3
半斤鸡胗10 小时前
css3基础
前端·css