[COLOR="Navy"]Sub[/COLOR] MG21Dec20
[COLOR="Navy"]Dim[/COLOR] Rng [COLOR="Navy"]As[/COLOR] Range
[COLOR="Navy"]Dim[/COLOR] Dn [COLOR="Navy"]As[/COLOR] Range
[COLOR="Navy"]Dim[/COLOR] n [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Dim[/COLOR] oTx [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String[/COLOR]
[COLOR="Navy"]Dim[/COLOR] Q [COLOR="Navy"]As[/COLOR] Variant
[COLOR="Navy"]Dim[/COLOR] Dic [COLOR="Navy"]As[/COLOR] Object
[COLOR="Navy"]Dim[/COLOR] Astr [COLOR="Navy"]As[/COLOR] Variant
[COLOR="Navy"]Dim[/COLOR] Ac [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Integer[/COLOR]
[COLOR="Navy"]Set[/COLOR] Rng = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
[COLOR="Navy"]With[/COLOR] CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] Dn [COLOR="Navy"]In[/COLOR] Rng
oTx = Dn & "," & Replace(Dn.Offset(, 1), " ", "") & "," & Dn.Offset(, 2)
[COLOR="Navy"]If[/COLOR] Not .Exists(oTx) [COLOR="Navy"]Then[/COLOR]
.Add oTx, Array(Dn, "")
[COLOR="Navy"]Else[/COLOR]
Q = .Item(oTx)
Q(1) = IIf(InStr(Dn.Offset(, 1), " "), Dn.Offset(, 1), Q(1))
[COLOR="Navy"]Set[/COLOR] Q(0) = Union(Q(0), Dn)
.Item(oTx) = Q
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]Next[/COLOR]
[COLOR="Navy"]Dim[/COLOR] c [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Dim[/COLOR] K [COLOR="Navy"]As[/COLOR] Variant
[COLOR="Navy"]Dim[/COLOR] G [COLOR="Navy"]As[/COLOR] Variant
[COLOR="Navy"]Set[/COLOR] Dic = CreateObject("scripting.dictionary")
Dic.CompareMode = vbTextCompare
ReDim ray(1 To .Count, 1 To 5)
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] K [COLOR="Navy"]In[/COLOR] .keys
c = c + 1
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] G [COLOR="Navy"]In[/COLOR] .Item(K)(0)
[COLOR="Navy"]For[/COLOR] n = 1 To 5
[COLOR="Navy"]Select[/COLOR] [COLOR="Navy"]Case[/COLOR] n
[COLOR="Navy"]Case[/COLOR] 2: ray(c, n) = IIf(.Item(K)(1) > "", .Item(K)(1), .Item(K)(0).Offset(, n - 1))
[COLOR="Navy"]Case[/COLOR] 4
Astr = Split(G.Offset(, 3), ",")
[COLOR="Navy"]For[/COLOR] Ac = 0 To UBound(Astr)
Dic(Astr(Ac)) = Empty
[COLOR="Navy"]Next[/COLOR] Ac
ray(c, n) = Join(Dic.keys, ", ")
[COLOR="Navy"]Case[/COLOR] 5: ray(c, n) = ray(c, n) + G.Offset(, n - 1)
[COLOR="Navy"]Case[/COLOR] Else: ray(c, n) = G.Offset(, n - 1)
[COLOR="Navy"]End[/COLOR] Select
[COLOR="Navy"]Next[/COLOR] n
[COLOR="Navy"]Next[/COLOR] G
Dic.RemoveAll
[COLOR="Navy"]Next[/COLOR] K
Sheets("Sheet2").Range("A2").Resize(.Count, 5) = ray
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]With[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]Sub[/COLOR]