7-8 WPS JS宏 对象使用 实例5--按多字段做多种汇总
对象使用 实例5 : 按多字段做多种汇总
原数据和结果


代码:
function test(){
var arr=Sheets("销售表").Range("a2",Sheets("销售表").Range("e9999").End(xlUp)).Value();
var obj={},wsf=WorksheetFunction,newarr=[["仓库","年份","品名","求和","批次"]];
for(var ar of arr){
var txt=`${[ar[0],ar[1],ar[2]]}`;//学习重点:
if(txt in obj){//学习重点:新用法一次查3个值,必须3个值=true,
obj[txt].push(ar[4]);//第二次以上添加ar[4]
}else{
obj[txt]=[ar[4]];//第一次添加ar[4]
}
}
for(var [key,zhi] of Object.entries(obj)){
newarr.push([...key.split(","),wsf.Sum(zhi),wsf.CountA(zhi)]);//push()进行添加,用[]进行分行
}
Sheets("汇总表").Range("a1").Resize(newarr.length,5).Value2=newarr;
}
javascript
function test(){
var arr=Sheets("销售表").Range("a2",Sheets("销售表").Range("e9999").End(xlUp)).Value();
var obj={},wsf=WorksheetFunction,newarr=[["仓库","年份","品名","求和","批次"]];
for(var ar of arr){
var txt=`${[ar[0],ar[1],ar[2]]}`;//学习重点:
if(txt in obj){//学习重点:新用法一次查3个值,必须3个值=true,
obj[txt].push(ar[4]);//第二次以上添加ar[4]
}else{
obj[txt]=[ar[4]];//第一次添加ar[4]
}
}
for(var [key,zhi] of Object.entries(obj)){
newarr.push([...key.split(","),wsf.Sum(zhi),wsf.CountA(zhi)]);//push()进行添加,用[]进行分行
}
Sheets("汇总表").Range("a1").Resize(newarr.length,5).Value2=newarr;
}