Private Sub CommandButton1_Click()
Dim d1 As New Dictionary, d2 As New Dictionary
Dim arr1, arr2(), i1 As Integer, i2 As Integer, i3 As Integer
arr1 = Range("A3:E" & Range("A65536").End(xlUp))
i2 = 0
i3 = 0
For i1 = 1 To UBound(arr1)
If Not d1.Exists(arr1(i1, 3)) Then
i2 = i2 + 1
d1(arr1(i1, 3)) = i2
End If
If Not d2.Exists(arr1(i1, 4)) Then
i3 = i3 + 1
d2(arr1(i1, 4)) = i3
End If
Next
ReDim arr2(1 To i2 + 3, 1 To i3 * 2 + 3)
arr2(1, 1) = "职称"
arr2(i2 + 3, 1) = "合计"
arr2(1, i3 * 2 + 2) = "合计"
For i1 = 1 To UBound(arr1)
arr2(1, d2(arr1(i1, 4)) * 2) = arr1(i1, 4)
arr2(2, d2(arr1(i1, 4)) * 2) = "人数"
arr2(2, d2(arr1(i1, 4)) * 2 + 1) = "金额"
arr2(2, i3 * 2 + 2) = "人数"
arr2(2, i3 * 2 + 3) = "金额"
arr2(d1(arr1(i1, 3)) + 2, 1) = arr1(i1, 3)
arr2(d1(arr1(i1, 3)) + 2, i3 * 2 + 2) = arr2(d1(arr1(i1, 3)) + 2, i3 * 2 + 2) + 1 'arr1(i1, 5)
arr2(d1(arr1(i1, 3)) + 2, i3 * 2 + 3) = arr2(d1(arr1(i1, 3)) + 2, i3 * 2 + 3) + arr1(i1, 5)
arr2(d1(arr1(i1, 3)) + 2, d2(arr1(i1, 4)) * 2) = arr2(d1(arr1(i1, 3)) + 2, d2(arr1(i1, 4)) * 2) + 1 'arr1(i1, 5)
arr2(d1(arr1(i1, 3)) + 2, d2(arr1(i1, 4)) * 2 + 1) = arr2(d1(arr1(i1, 3)) + 2, d2(arr1(i1, 4)) * 2 + 1) + arr1(i1, 5)
arr2(i2 + 3, d2(arr1(i1, 4)) * 2) = arr2(i2 + 3, d2(arr1(i1, 4)) * 2) + 1
arr2(i2 + 3, d2(arr1(i1, 4)) * 2 + 1) = arr2(i2 + 3, d2(arr1(i1, 4)) * 2 + 1) + arr1(i1, 5)
arr2(i2 + 3, i3 * 2 + 2) = arr2(i2 + 3, i3 * 2 + 2) + 1
arr2(i2 + 3, i3 * 2 + 3) = arr2(i2 + 3, i3 * 2 + 3) + arr1(i1, 5)
Next
[O2].Resize(i2 + 3, i3 * 2 + 3) = arr2
End Sub