this is answer for case in link : https://www.ozgrid.com/forum/f…umbers-in-numerical-order
Code
Function Urutkan(ar() As Variant, cl As Long)
Dim a As Long, b As Long, c As Long
For a = 1 To UBound(ar, 1)
For b = a + 1 To UBound(ar, 1)
If ar(a, cl) > ar(b, cl) Then
For c = 1 To UBound(ar, 2)
temp = ar(a, c)
ar(a, c) = ar(b, c): ar(b, c) = temp
Next c
End If
Next b
Next a
End Function
Sub xx1()
Dim Rg As Range, Tr As String, x As Variant, ar(), sp, i As Long, ii As Long, ans As String
Dim r As Long, c As Long, fd As Boolean, dic As Object: Set dic = CreateObject("scripting.dictionary")
Set Rg = [a1]: Tr = "ARD"
x = Replace(Rg.Value, " ", "")
ans = MsgBox("Are you Replace", vbYesNo)
If ans = vbYes Then
x = Replace(x, Tr, "")
fd = True
Else
x = x: fd = False
End If
sp = Split(x, ",")
ReDim ar(1 To UBound(sp) + 1, 1 To 2)
For i = 0 To UBound(sp)
r = r + 1
txt = Trim$(sp(i))
If Not IsNumeric(Right(txt, 1)) Then
ar(r, 1) = Val(txt)
ar(r, 2) = Replace(txt, ar(r, 1), "")
Else
ar(r, 1) = Val(txt)
End If
Next i
Urutkan ar, 1
For i = 1 To UBound(ar, 1)
If Not ar(i, 2) = vbNullString Then
For ii = i + 1 To UBound(ar, 1)
If ar(i, 2) > ar(ii, 2) And ar(i, 1) = ar(ii, 1) Then
temp = ar(i, 2): ar(i, 2) = ar(ii, 2): ar(ii, 2) = temp
End If
Next ii
End If
Next i
For i = 1 To UBound(ar)
dic(ar(i, 1) & ar(i, 2)) = ""
Next i
Erase ar
For Each v In dic
If fd = True Then
If tt = "" Then tt = Tr & v Else tt = tt & "," & Tr & v
Else
If tt = "" Then tt = v Else tt = tt & "," & v
End If
Next v
Rg(1, 2).Value = tt
End Sub
Display More
[ATTACH=JSON]{"data-align":"none","data-size":"full","title":"ssx.png","data-attachmentid":1219768}[/ATTACH]