|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
不敢当,我菜鸟一个。给你一个合并单元格,边框,居中全部搞好的。源数据排序就不给你写了,好像你自己已经写过了。
- function myTest(){
- let res = [year,month,area] = [['年'],['月'],['地区']],
- sum_month = ['按月合计'], sum_area = {'年':['按地区合计',null],'月':['数量','金额'],'地区':[null,null]}, sum = [0,0]
- Sheets("源数据").UsedRange().slice(1).forEach(([a,y,m,s,j])=>{
- let r = area[a] ??= res.push([a]) - 1,//插入行
- c = month[y + m] ??= (year.push(y,null),month.push(m,null),area.push('数量','金额')-1) //插入列
- res[r][c-1] ??= 0; res[r][c-1] += s; res[r][c] ??= 0; res[r][c] += j//写入本次循环数据
- sum_month[c-1] ??= 0; sum_month[c-1] += s; sum_month[c] ??= 0; sum_month[c] += j//按月求和
- sum_area[a] ??= [0,0]; sum_area[a][0] += s ; sum_area[a][1] += j //按地区求和
- sum[0] += s ; sum[1] += j
- })
- sum_area['按月合计'] = [...sum]//按地区求和的合计
- res.push(sum_month)//压入合计行
- res = res.map(v=> [...v, ...sum_area[v[0]]])//每行追加按地区合计
- Sheets("转表").Range("a1").CurrentRegion.Clear()
- let rng = Sheets("转表").Range("a1").Resize(res.length,res[0].length)
- rng.Value2 = res//一次性将结果写入表格
- for( let row of rng.Rows("1:2").Rows) for( let cell of row.Cells) !cell() && cell.Offset(0,-1).Resize(1,2).Merge()
- for(let cell of rng.Rows(3).Cells) !cell() && cell.Offset(-1,0).Resize(2,1).Merge()
- rng.Borders.LineStyle = 1
- rng.Rows("1:3").HorizontalAlignment = xlCenter
- }
复制代码
|
评分
-
1
查看全部评分
-
|