7-8 WPS JS宏 对象使用实例5--按多字段做多种汇总

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;
}
相关推荐
神奇小汤圆8 小时前
Spring让Java慢了30倍,JIT、AOT等让Java比Python快13倍,比C慢17%
后端
烛阴8 小时前
Three.js 零基础入门:手把手打造交互式 3D 几何体展示系统
javascript·webgl·three.js
颜酱8 小时前
单调栈:从模板到实战
javascript·后端·算法
神奇小汤圆8 小时前
支付成功订单却没了?MyBatis连接池的坑我踩了
后端
_AaronWong10 小时前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
JohnYan10 小时前
工作笔记-CodeBuddy应用探索
javascript·ai编程·aiops
雨中飘荡的记忆11 小时前
OpenClaw:开源AI助手平台的革命之路
后端
程序员鱼皮11 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
用户2986985301411 小时前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
wuhen_n11 小时前
双端 Diff 算法详解
前端·javascript·vue.js