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,ar1,ar2]}`;//学习重点:

if(txt in obj){//学习重点:新用法一次查3个值,必须3个值=true,

objtxt.push(ar4);//第二次以上添加ar4

}else{

objtxt=ar\[4];//第一次添加ar4

}

}

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;
}
相关推荐
小裕哥略帅3 分钟前
Spring AOP 实现通用 Token 自动刷新重试工具包
java·后端·spring
凤山老林7 分钟前
Spring Boot 3 + Spring Authorization Server 构建企业级 SSO:多端互通、会话共享与
spring boot·后端·spring·单点登录·sso·多端互通
.Hypocritical.21 分钟前
【SpringBoot】配置文件加载位置与优先级详解
java·spring boot·后端
zzzzzz3101 小时前
react-bits:酷炫动效之外,React 组件库还能提供什么
javascript·react.js·动效
web打印社区8 小时前
网页静默打印热敏小票:从 HTML 到出纸的完整指南
前端·javascript·vue.js·electron·pdf·html
码事漫谈9 小时前
勿删
后端
IT_陈寒13 小时前
用了Proxy才发现以前的JavaScript白写了
前端·人工智能·后端
唐青枫14 小时前
别把 ArrayList 当成会自动管理内存的 List:Zig 动态数组从入门到实战
后端
鸿蒙开发14 小时前
我为 HarmonyOS 做了一个统一大模型 SDK:@hmkit/ai 正式开源
后端
猪是念来过倒14 小时前
Semaphore 与 RateLimiter:并发控制双雄详解
后端