可以了
- function 筛选汇总(){
- let [sdate,edate]=[Sheets('汇总').Range('b1').Value(),Sheets('汇总').Range('d1').Value()]
- let arr=Sheets('原数据').Range('a1').CurrentRegion().slice(1).filter(v=>v[0]>=sdate && v[0]<=edate)
- let hj=['合计',0,null,0];
- arr=arr.reduce((p,[sj,pm,sl,dj,zj])=>(
- //sj=WorksheetFunction.Text(sj,'yyyy-mm=dd'),//如果需要日期列把日期格式设置一下
- p[pm]??=p.push([pm,0,0,0])-1,
- p[p[pm]][1]+=sl,
- p[p[pm]][2]=dj,
- p[p[pm]][3]+=zj,
- hj[1]+=sl,
- hj[3]+=zj,
- p),[['品名','总数量','单价','总金额']]);
- arr.push(hj);
- let rng=Sheets('汇总').Range('a2').Resize(arr.length,arr[0].length);
- rng.Value2=arr;
- rng.Columns.AutoFit();
- rng.Borders.LineStyle=1;
- rng.HorizontalAlignment=xlCenter;
- alert('汇总完毕!')
- }
复制代码 |