'如果数据量大可以用这方法 Option Explicit Sub abc() Dim a, i, j, p, d, m a = [a1].CurrentRegion.Resize(, 3).Value ReDim b(10 ^ 4, 12) ' Set d = CreateObject("scripting.dictionary") For i = 2 To UBound(a) p = Month(a(i, 1)) If Not d.exists(a(i, 2)) Then m = m + 1: d(a(i, 2)) = m: b(m, 0) = a(i, 2) b(d(a(i, 2)), p) = b(d(a(i, 2)), p) + a(i, 3) Next For j = 1 To 12 b(0, j) = Format(j, "00月") Next b(0, 0) = "人名" With [f1] .Resize(UBound(b) + 1, 12 + 1).Clear With .Resize(m + 1, 12 + 1) .Borders.LineStyle = xlContinuous .Value = b End With End With End Sub
Sub text() Set d = CreateObject("scripting.dictionary") Dim k, 月份 As Double arr = UsedRange For i = 2 To UBound(arr) g = arr(i, 2): 月份 = Month(arr(i, 1)) If d.exists(g) Then k = d(g): k(月份) = k(月份) + arr(i, 3) Else ReDim k(12): k(0) = g: k(月份) = arr(i, 3) End If d(g) = k Next i p = d.items For i = 0 To UBound(p) Cells(i + 2, 5).Resize(, 13) = p(i) Next i End Sub