|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
源代码如下:
- function test7(){
- Sheets('区').Activate();
- let rngs = [...Range('A3').CurrentRegion.Columns(2).Cells].slice(1);
- let arr = Range('A3').CurrentRegion().slice(1);
- let max = 0;
- let dic = arr.reduce((x, [a, b, c, d], j) => {
- let dic = x[c] ??= {l:[], r:{}, a:[]};
- let i = dic.r[d] ??= 0;
- (dic.l[i] ??= [c])[d + 1] = a + b;
- dic.a.push([rngs[j], i + 1, d + 2])
- max = Math.max(max, d);
- return ++dic.r[d], x;
- }, {});
- let res =[['类别\\数量', ...Array(max + 1).keys()]];
- Object.keys(dic).forEach(x => res.push(...dic[x].l));
- Range('G2').CurrentRegion.Clear();
- let rng = Range('G2').Resize(res.length, res[0].length);
- rng.Value2 = res;
- let iOffset = 1;
- for(let t in dic){//复制【名字】列的单元格格式
- dic[t].a.forEach(([s, i, j]) => {
- if(s.Hyperlinks.Count > 0) //如果有超链接则复制
- ActiveSheet.Hyperlinks.Add(
- rng.Cells(i+iOffset, j),
- s.Hyperlinks(1).Address
- )
- s.Copy();
- rng.Cells(i+iOffset, j).PasteSpecial(xlPasteFormats);
- })
- iOffset += dic[t].l.length;
- }
- Application.CutCopyMode = false;
- rng.Columns(1).RangeEx.MergeSame();//同类自动合并单元格
- rng.Borders.LineStyle = 9;//VBA不熟悉,向A佬学的
- }
复制代码 |
|