Public Sub GPE()
Dim Dic As Object, sArr, dArr
Dim I As Long, K As Long, N As Long, R As Long, T As Long
Set Dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheet6
sArr = .Range("B14", .Range("B65000").End(3)).Resize(, 9).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 1000)
K = 2: N = 1
For I = 1 To UBound(sArr)
If sArr(I, 2) <> Empty Then
If Not Dic.Exists(sArr(I, 2)) Then
N = N + 1
dArr(1, N) = sArr(I, 1)
dArr(2, N) = sArr(I, 2)
Dic.Add sArr(I, 2), N
End If
If sArr(I, 9) <> Empty Then
If Not Dic.Exists(sArr(I, 9)) Then
K = K + 1
Dic.Add sArr(I, 9), K
dArr(K, 1) = sArr(I, 9)
End If
R = Dic.Item(sArr(I, 9))
T = Dic.Item(sArr(I, 2))
dArr(R, T) = dArr(R, T) + sArr(I, 6)
End If
End If
Next I
With Sheet5
.Range("B1").Resize(K, N).Value = dArr
End With
Application.ScreenUpdating = True
Set Dic = Nothing
End Sub