Sub Test()
Dim a(), b(), c As New Collection, i As Long, j As Long, p As Long, v
a = Sheets("Input").Range("A1").CurrentRegion.Value
ReDim b(1 To UBound(a, 1), 1 To 10)
For i = 2 To UBound(a, 1)
On Error Resume Next
c.Add key:=a(i, 4), Item:=c.Count + 1
On Error GoTo 0
p = c(a(i, 4))
For j = 1 To 4
b(p, j) = a(i, j)
Next j
b(p, 5) = b(p, 5) + 1
If IsEmpty(b(p, 6)) Or a(i, 5) < b(p, 6) Then b(p, 6) = a(i, 5)
If a(i, 6) > b(p, 7) Then b(p, 7) = a(i, 6)
b(p, 8) = b(p, 8) & "|" & a(i, 7)
b(p, 9) = b(p, 9) & "|" & a(i, 8)
If a(i, 10) <> "\N" Then b(p, 10) = b(p, 10) & "|" & a(i, 10)
Next i
For i = 1 To c.Count
For j = 8 To 10
Set c = Nothing
For Each v In Split(b(i, j), "|")
On Error Resume Next
c.Add key:=CStr(v), Item:=v
On Error GoTo 0
Next v
b(i, j) = vbNullString
For Each v In c
b(i, j) = b(i, j) & IIf(Len(b(i, j)), IIf(j = 8, ",", vbCrLf), "") & v
Next v
Next j
Next i
With Sheets("Output")
.Range("A1").CurrentRegion.Offset(1).ClearContents
With .Range("A2").Resize(i - 1, UBound(b, 2))
.Value = b
.Borders.Weight = xlThin
End With
End With
End Sub
Bookmarks