Option Explicit
Sub Bao_Cao()
Dim DL(), KQ()
Dim I As Long, K As Long, R As Long, Rws As Long
Dim Dic As Object
Dim ID As String
Set Dic = CreateObject("scripting.dictionary")
With Sheet1
DL = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 2).Value
R = UBound(DL)
ReDim KQ(1 To R, 1 To 4)
For I = 1 To UBound(DL)
ID = Right(Trim(DL(I, 1)), 3)
If Not Dic.exists(ID) Then
K = K + 1
Dic.Item(ID) = K
KQ(K, 1) = ID
End If
Rws = Dic.Item(ID)
KQ(Rws, 2) = KQ(Rws, 2) + 1
KQ(Rws, 3) = KQ(Rws, 3) + DL(I, 2)
Next I
For I = 1 To K
KQ(I, 4) = KQ(I, 3) / KQ(I, 2)
Next I
End With
Set Dic = Nothing
With Sheet2
.Range("B2").Resize(R, 4).ClearContents
.Range("B2").Resize(K, 4) = KQ
.Range("B2").Resize(K, 4).Sort Key1:=.Range("B2"), Order1:=xlAscending
End With
End Sub