|
楼主 |
发表于 2024-10-25 15:49
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
- function erlieshuju(){
- let res=[hj,year,month,diqu]=[['合计'],['年'],['月'],['地区']];zj=[[0,0],['数量总计','金额总计'],[null,null],[null,null]];
- let arr=Sheets('源数据').Range('a1').CurrentRegion().slice(1);
- arr.sort((a,b)=>(a[1].split('年')[0]+a[2].split('月')[0])-(b[1].split('年')[0]+b[2].split('月')[0]));
- arr.forEach(([a,b,c,d,e])=>{
- col=month[b+c]??=(hj.push(0,0),year.push(b,b),month.push(c,c),diqu.push('数量','金额')-1);
- row=diqu[a]??=(zj.push([0,0]),res.push([a])-1);
- res[row][col-1]??=0;res[row][col-1]+=d;res[row][col]??=0;res[row][col]+=e;hj[col-1]+=d;hj[col]+=e;
- zj[row][0]+=d;zj[row][1]+=e;zj[0][0]+=d;zj[0][1]+=e;
- })
- temp=res.shift();res.push(temp);
- temp=zj.shift(),zj.push(temp)
- Sheets('转表').Range('a11').Resize(res.length,res[0].length).Value2=res;
- Sheets('转表').Cells(11,res[0].length+1).Resize(res.length,2).Value2=zj;
- }
复制代码 |
|