[B][COLOR=Royalblue]Sub[/COLOR][/B] a1080939a()
[I][COLOR=seagreen]'https://www.mrexcel.com/forum/excel-questions/1080939-sorting-multiple-data-patterns.html[/COLOR][/I]
[B][COLOR=Royalblue]Dim[/COLOR][/B] d [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Object[/COLOR][/B]
[B][COLOR=Royalblue]Dim[/COLOR][/B] a [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], b [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], m [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], n [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], i [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], j [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B], k [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Long[/COLOR][/B]
[B][COLOR=Royalblue]Dim[/COLOR][/B] z [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]String[/COLOR][/B]
[B][COLOR=Royalblue]Dim[/COLOR][/B] va [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Variant[/COLOR][/B], vb [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Variant[/COLOR][/B], vc [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Variant[/COLOR][/B], q [B][COLOR=Royalblue]As[/COLOR][/B] [B][COLOR=Royalblue]Variant[/COLOR][/B]
a = Range([COLOR=brown]"A"[/COLOR] & Rows.count).[B][COLOR=Royalblue]End[/COLOR][/B](xlUp).Row
b = Cells.Find([COLOR=brown]"*"[/COLOR], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
va = Range(Cells([COLOR=crimson]2[/COLOR], [COLOR=brown]"B"[/COLOR]), Cells(a, b))
[B][COLOR=Royalblue]Set[/COLOR][/B] d = CreateObject([COLOR=brown]"scripting.dictionary"[/COLOR])
d.CompareMode = vbTextCompare
[B][COLOR=Royalblue]For[/COLOR][/B] [B][COLOR=Royalblue]Each[/COLOR][/B] x [B][COLOR=Royalblue]In[/COLOR][/B] va
[B][COLOR=Royalblue]If[/COLOR][/B] Len(x) > [COLOR=crimson]4[/COLOR] [B][COLOR=Royalblue]Then[/COLOR][/B]
m = InStr([COLOR=crimson]1[/COLOR], x, [COLOR=brown]"."[/COLOR])
n = InStr(m + [COLOR=crimson]1[/COLOR], x, [COLOR=brown]"."[/COLOR])
z = [B][COLOR=Royalblue]Mid[/COLOR][/B](x, m, n - m + [COLOR=crimson]1[/COLOR])
d(z) = [COLOR=brown]""[/COLOR]
[B][COLOR=Royalblue]End[/COLOR][/B] [B][COLOR=Royalblue]If[/COLOR][/B]
[B][COLOR=Royalblue]Next[/COLOR][/B]
[B][COLOR=Royalblue]ReDim[/COLOR][/B] vb([COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] [COLOR=crimson]1[/COLOR], [COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] d.count)
[B][COLOR=Royalblue]For[/COLOR][/B] [B][COLOR=Royalblue]Each[/COLOR][/B] q [B][COLOR=Royalblue]In[/COLOR][/B] d.Keys
i = i + [COLOR=crimson]1[/COLOR]: vb([COLOR=crimson]1[/COLOR], i) = q
[B][COLOR=Royalblue]Next[/COLOR][/B]
[B][COLOR=Royalblue]ReDim[/COLOR][/B] vc([COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] UBound(va, [COLOR=crimson]1[/COLOR]), [COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] UBound(vb, [COLOR=crimson]2[/COLOR]))
[B][COLOR=Royalblue]For[/COLOR][/B] i = [COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] UBound(va, [COLOR=crimson]1[/COLOR])
[B][COLOR=Royalblue]For[/COLOR][/B] j = [COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] UBound(va, [COLOR=crimson]2[/COLOR])
[B][COLOR=Royalblue]For[/COLOR][/B] k = [COLOR=crimson]1[/COLOR] [B][COLOR=Royalblue]To[/COLOR][/B] UBound(vb, [COLOR=crimson]2[/COLOR])
[B][COLOR=Royalblue]If[/COLOR][/B] InStr([COLOR=crimson]1[/COLOR], va(i, j), vb([COLOR=crimson]1[/COLOR], k), [COLOR=crimson]1[/COLOR]) [B][COLOR=Royalblue]Then[/COLOR][/B]
[B][COLOR=Royalblue]If[/COLOR][/B] vc(i, k) = [COLOR=brown]""[/COLOR] [B][COLOR=Royalblue]Then[/COLOR][/B]
vc(i, k) = va(i, j)
[B][COLOR=Royalblue]Else[/COLOR][/B]
vc(i, k) = vc(i, k) & [COLOR=brown]", "[/COLOR] & va(i, j)
[B][COLOR=Royalblue]End[/COLOR][/B] [B][COLOR=Royalblue]If[/COLOR][/B]
[B][COLOR=Royalblue]End[/COLOR][/B] [B][COLOR=Royalblue]If[/COLOR][/B]
[B][COLOR=Royalblue]Next[/COLOR][/B]
[B][COLOR=Royalblue]Next[/COLOR][/B]
[B][COLOR=Royalblue]Next[/COLOR][/B]
va = Range(Cells([COLOR=crimson]1[/COLOR], [COLOR=brown]"A"[/COLOR]), Cells(a, [COLOR=brown]"A"[/COLOR]))
[B][COLOR=Royalblue]With[/COLOR][/B] Sheets([COLOR=brown]"Sheet2"[/COLOR])
.Range([COLOR=brown]"A1"[/COLOR]).Resize(UBound(va, [COLOR=crimson]1[/COLOR]), [COLOR=crimson]1[/COLOR]) = va
.Range([COLOR=brown]"B1"[/COLOR]).Resize([COLOR=crimson]1[/COLOR], UBound(vb, [COLOR=crimson]2[/COLOR])) = vb
.Range([COLOR=brown]"B2"[/COLOR]).Resize(UBound(vc, [COLOR=crimson]1[/COLOR]), UBound(vc, [COLOR=crimson]2[/COLOR])) = vc
[B][COLOR=Royalblue]End[/COLOR][/B] [B][COLOR=Royalblue]With[/COLOR][/B]
[B][COLOR=Royalblue]End[/COLOR][/B] [B][COLOR=Royalblue]Sub[/COLOR][/B]