
Option Explicit
Sub abc()
Dim a, i, m, n, d(1)
a = [a1].CurrentRegion.Offset(1).Resize(, 3).Value
ReDim b(1 To UBound(a), 1 To 50) '不够自己加
For i = 0 To UBound(d)
Set d(i) = CreateObject("scripting.dictionary")
Next
m = 1: n = 2
For i = 1 To UBound(a) - 1
If Not d(0).exists(a(i, 2)) Then
m = m + 1: d(0)(a(i, 2)) = m
b(m, 1) = m - 1: b(m, 2) = a(i, 2)
End If
If Not d(1).exists(a(i, 1)) Then
n = n + 1: d(1)(a(i, 1)) = n
b(1, n) = a(i, 1)
End If
b(d(0)(a(i, 2)), d(1)(a(i, 1))) = a(i, 3)
b(d(0)(a(i, 2)), UBound(b, 2)) = _
b(d(0)(a(i, 2)), UBound(b, 2)) + Val(a(i, 3))
Next
b(1, n + 1) = "合计"
For i = 2 To m
b(i, n + 1) = b(i, UBound(b, 2))
Next
[e2].Resize(m, n + 1) = b
End Sub