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;
}
相关推荐
echola_mendes16 小时前
InfluxDB(四)——动态 Field/Tag 实现多类型设备统一接入的完整实践指南
java·后端·struts
Cyan_RA916 小时前
SpringMVC REST 详解
java·spring·mvc·springmvc·restful·jquery·jsp
吹个口哨写代码16 小时前
小程序图片不显示,直接访问显示,头部配置问题
javascript·css·nginx
.柒宇.16 小时前
AI 掘金头条项目-新闻模块实现
数据库·后端·python·fastapi
林恒smileZAZ16 小时前
宇宙画布:纯 CSS+JS 实现交互式深空艺术
前端·javascript·css
TO_ZRG16 小时前
Android Broadcast Receiver完全入门指南
java·后端·spring
Knight_AL16 小时前
使用 CyclicBarrier + 自定义线程池实现 SpringBoot 并行报表(完整性能对比)
java·spring boot·后端
IT_陈寒16 小时前
Java的finally块居然没执行?这是个巨坑
前端·人工智能·后端
代码羊羊16 小时前
Rust 闭包全方位详解:语法、捕获规则、Fn 三特征、返回值实战
开发语言·后端·rust
Dxy123931021617 小时前
js如何根据开始位置结束位置在类表中取对应范围的数据
开发语言·javascript·ecmascript