Sub GPE()
Dim Arr, vlArr(1 To 10000, 1 To 6), I, J, K, Dic, Tem
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
Arr = .Range(.[A4], .[A65000].End(3)).Resize(, 6).Value
For I = 1 To UBound(Arr, 1)
Tem = Arr(I, 1) & "#" & Arr(I, 2)
If Not Dic.exists(Tem) Then
If K > 1 Then K = K - 1
K = K + 1
Dic.Add Tem, K
For J = 1 To 6
vlArr(K, J) = IIf(J = 3 Or J = 4, "'" & Arr(I, J), Arr(I, J))
Next
Else
K = K + 1
vlArr(K, 3) = "'" & Arr(I, 3)
vlArr(Dic.Item(Tem) + 1, 4) = "'" & Arr(I, 4)
vlArr(K, 5) = Arr(I, 5)
If Arr(I, 3) <> Empty Then
vlArr(Dic.Item(Tem), 6) = vlArr(Dic.Item(Tem), 6) + Arr(I, 6)
Else
vlArr(Dic.Item(Tem) + 1, 6) = vlArr(Dic.Item(Tem) + 1, 6) + Arr(I, 6)
End If
End If
Next I
If K Then
.[H4:M10000].ClearContents
.[H4].Resize(K, 6) = vlArr
End If
End With
Set Dic = Nothing
End Sub