| ©«¤l4901 ¥DÃD44 ºëµØ24 ¿n¤À4916 ÂI¦W267  §@·~¨t²ÎWindows 7 ³nÅ骩¥»Office 20xx ¾\ŪÅv150 ©Ê§O¨k ¨Ó¦Û¥x¥_ µù¥U®É¶¡2010-4-30 ³Ì«áµn¿ý2025-10-31 
                
 | 
                
| ½Æ»s¥N½XSub nn()
Set d = CreateObject("Scripting.dictionary")
Set d1 = CreateObject("Scripting.dictionary")
Dim Ar()
Range("A4").CurrentRegion.Sort key1:=[A5], Header:=xlYes
A = [A4].CurrentRegion.Offset(1)
For i = 1 To UBound(A)
 If IsEmpty(d(A(i, 1) & A(i, 5))) Then
    d(A(i, 1) & A(i, 5)) = Array(Application.Index(A, i))
    d1(A(i, 1) & A(i, 5)) = d1(A(i, 1) & A(i, 5)) + 1
    Else
    Ar = d(A(i, 1) & A(i, 5))
    ReDim Preserve Ar(d1(A(i, 1) & A(i, 5)))
    Ar(d1(A(i, 1) & A(i, 5))) = Array(Application.Index(A, i))
    d(A(i, 1) & A(i, 5)) = Ar
    d1(A(i, 1) & A(i, 5)) = d1(A(i, 1) & A(i, 5)) + 1
  End If
Next
r = 5
[A4].CurrentRegion.Offset(1) = ""
For Each ky In d.keys
If ky <> "" Then
   Cells(r, 1).Resize(UBound(d(ky)) + 1, 7) = Application.Transpose(Application.Transpose(d(ky)))
   Cells(r + UBound(d(ky)) + 1, 5) = "Sub Total:"
   Cells(r + UBound(d(ky)) + 1, 6) = Application.Sum(Application.Index(d(ky), , 6))
   r = r + UBound(d(ky)) + 3
End If
Next
End Su
 | 
 |