Sub Test()
Dim a, b, c As New Collection, i As Long, j As Long, strKey As String, v1, v2, v3, v4
With Sheets("Data")
a = .Range("A1").CurrentRegion.Value
ReDim b(1 To UBound(a, 1) * 10, 1 To 5)
For i = 3 To UBound(a, 1)
On Error Resume Next
strKey = CStr(a(i, 2))
c.Add key:=strKey, Item:=Array(a(i, 2), New Collection)
With c(strKey)(1)
strKey = CStr(a(i, 12))
.Add key:=strKey, Item:=Array(a(i, 12), New Collection)
With .Item(strKey)(1)
For j = 3 To 13
If j <> 12 Then
.Add key:=a(2, j), Item:=Array(a(2, j), New Collection)
With .Item(a(2, j))(1)
.Add Array(a(i, j), a(i, 1))
End With
End If
Next j
End With
End With
On Error GoTo 0
Next i
b(1, 1) = "Date"
b(1, 2) = "Type"
b(1, 3) = "Sum of"
b(1, 4) = "Amt"
b(1, 5) = "TransNo"
i = 2
For Each v1 In c
b(i, 1) = v1(0)
For Each v2 In v1(1)
b(i, 2) = v2(0)
For Each v3 In v2(1)
b(i, 3) = v3(0)
For Each v4 In v3(1)
b(i, 4) = b(i, 4) + v4(0)
b(i, 5) = b(i, 5) & ", " & v4(1)
Next v4
b(i, 5) = Mid$(b(i, 5), 3)
i = i + 1
Next v3
Next v2
Next v1
i = i - 1
For j = 2 To i
If b(j, 1) = "" Then b(j, 1) = b(j - 1, 1)
If b(j, 2) = "" Then b(j, 2) = b(j - 1, 2)
Next j
With .Range("U2").Resize(i, UBound(b, 2))
.Value = b
.EntireColumn.AutoFit
.Borders.Weight = xlThin
End With
End With
End Sub
Bookmarks