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()
}