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 = row0;

if (!mergedDataproduct) {

mergedDataproduct = \[\];

}

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

});

});

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

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()
}
相关推荐
子兮曰12 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰12 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万12 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝12 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋13 小时前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁13 小时前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄14 小时前
JavaScript 隐式全局变量解析
javascript
汉堡大王952715 小时前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大15 小时前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师15 小时前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端