|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 tel3033 于 2022-6-7 16:00 编辑
- Sub byDD()
- Dim i%, j%, n%, s$, arr, brr(), d(1 To 5) As Object
- On Error Resume Next
- For i = 1 To 5
- Set d(i) = CreateObject("Scripting.Dictionary")
- Next
- With Sheet1
- arr = .[a1].CurrentRegion
- For i = 2 To UBound(arr)
- For j = 1 To 5
- d(j)(Format(arr(i, 1), "yyyy")) = d(j)(Format(arr(i, 1), "yyyy")) + arr(i, j + 2)
- d(j)(Format(arr(i, 1), "m")) = d(j)(Format(arr(i, 1), "m")) + arr(i, j + 2)
- d(j)(Format(arr(i, 1), "m") & arr(i, 2)) = d(j)(Format(arr(i, 1), "m") & arr(i, 2)) + arr(i, j + 2)
- t = d(j).items()(0)
- Next j
- endrow = endrow + 1
- ReDim Preserve brr(1 To 7, 1 To endrow)
- For n = 1 To 7
- brr(n, endrow) = arr(i, n)
- Next n
- If Format(arr(i + 1, 1), "m") & arr(i + 1, 2) <> Format(arr(i, 1), "m") & arr(i, 2) Then
- endrow = endrow + 1: s = Format(arr(i, 1), "m") & arr(i, 2)
- ReDim Preserve brr(1 To 7, 1 To endrow)
- For n = 1 To 7
- brr(n, endrow) = Array("", "小计", d(1)(s), d(2)(s), d(3)(s), d(4)(s), d(5)(s))(n - 1)
- Next n
- .Range("b" & endrow + 1 & ":g" & endrow + 1).Interior.Color = 65535
- End If
- If Format(arr(i + 1, 1), "m") <> Format(arr(i, 1), "m") Then
- endrow = endrow + 1: s = Format(arr(i, 1), "m")
- ReDim Preserve brr(1 To 7, 1 To endrow)
- For n = 1 To 7
- brr(n, endrow) = Array("", "合计", d(1)(s), d(2)(s), d(3)(s), d(4)(s), d(5)(s))(n - 1)
- Next n
- .Range("b" & endrow + 1 & ":g" & endrow + 1).Interior.Color = 5296274
- End If
- Next i
- endrow = endrow + 1: s = (Format(arr(i-1, 1), "yyyy"))
- ReDim Preserve brr(1 To 7, 1 To endrow)
- For n = 1 To 7
- brr(n, endrow) = Array("", "总计", d(1)(s), d(2)(s), d(3)(s), d(4)(s), d(5)(s))(n - 1)
- Next n
- .Range("b" & endrow + 1 & ":g" & endrow + 1).Interior.Color = 15773696
- .[a2].Resize(UBound(brr, 2), UBound(brr)) = Application.Transpose(brr)
- .Range("a1:g" & .Cells(Rows.Count, 2).End(xlUp).Row).Borders.LineStyle = xlContinuous
- End With
- End Sub
复制代码 |
评分
-
2
查看全部评分
-
|