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()
}
相关推荐
用户69371750013843 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦3 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户69371750013843 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
漫随流水4 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
踩着两条虫5 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
jzlhll1236 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
用头发抵命7 小时前
Vue 3 中优雅地集成 Video.js 播放器:从组件封装到功能定制
开发语言·javascript·ecmascript
蓝冰凌7 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛7 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js