Mình ghi đc macro thủ công này bạn xem thử nhé. Mới học tý VBA nên ko bít dùng Array hay Dic.
Sub test()
Set ws = Sheet1
Set ws2 = Sheet2
Application.ScreenUpdating = False
ws2.Range("A17:I500").ClearContents
ws.Activate
ws.AutoFilterMode = False
Range("L1:S1").Formula = "=IFERROR(AVERAGE(L2:L50),0)"
lr = Range("A" & Rows.Count).End(xlUp).Row
Range("A4:A" & lr).Copy
Range("K1").PasteSpecial (xlPasteValues)
Columns("K:K").RemoveDuplicates Columns:=1, Header:=xlYes
Set Rng = Range("K2:K" & Range("K" & Rows.Count).End(xlUp).Row)
For Each glua In Rng
Columns("A:I").AutoFilter field:=1, Criteria1:=glua
Range("C4:J" & lr).SpecialCells(xlCellTypeVisible).Copy
ws.AutoFilterMode = False
Range("L2").PasteSpecial (xlPasteValues)
Range("L1:S1").Copy
lrp = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
ws2.Range("A" & lrp) = glua
ws2.Range("B" & lrp).PasteSpecial (xlPasteValues)
ws.Range("L2:S50").ClearContents
Next glua
ws.Columns("K:S").Delete
Application.ScreenUpdating = True
End Sub