Number Sorting Problem on Excel

ceoeric9

New Member
Joined
Jul 11, 2011
Messages
3
Hi,

I'm currently working on a spreadsheet project with a list of over 6,000 numbers and words (ie. APP-BB.2.3, etc...)

I'm trying to get this is in order because excel seems to sort the numbers in a weird way where it would start off with 1 but skip to 10 and then 4.1... would show up.

here is an example...
1.1<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
1.2<o:p></o:p>
1.3.1<o:p></o:p>
1.3.2.a<o:p></o:p>
1.3.2.b<o:p></o:p>
1.3.2.c<o:p></o:p>
1.3.2.d<o:p></o:p>
1.3.2.e<o:p></o:p>
1.3.2.f<o:p></o:p>
1.3.2.g<o:p></o:p>
1.3.2.h<o:p></o:p>
1.3.2.i<o:p></o:p>
1.3.2.j<o:p></o:p>
1.3.2.k<o:p></o:p>
1.3.2.l<o:p></o:p>
1.3.2.m<o:p></o:p>
10.1.1<o:p></o:p>
10.1.1.a<o:p></o:p>
10.1.1b<o:p></o:p>
10.1.2<o:p></o:p>
10.1.2<o:p></o:p>
10.1.3.1<o:p></o:p>
10.1.3.2<o:p></o:p>
10.1.3.2<o:p></o:p>
10.1.3.2<o:p></o:p>
10.1.3.2<o:p></o:p>
10.1.3.2<o:p></o:p>
10.1.3.3<o:p></o:p>
10.1.3.3<o:p></o:p>
10.1.3.3<o:p></o:p>
10.1.4<o:p></o:p>
10.1.5<o:p></o:p>
10.1.5<o:p></o:p>
10.1.5<o:p></o:p>
10.1.5<o:p></o:p>
10.1.6<o:p></o:p>
10.2<o:p></o:p>
10.2.1.1<o:p></o:p>
10.2.1.2<o:p></o:p>
10.2.1.2<o:p></o:p>
10.2.1.3<o:p></o:p>
10.2.1.3.a<o:p></o:p>
10.2.1.3.b<o:p></o:p>
10.2.1.3.c<o:p></o:p>
10.2.10.1<o:p></o:p>
10.2.10.2<o:p></o:p>
10.2.10.3<o:p></o:p>
10.2.10.3<o:p></o:p>
10.2.10.4<o:p></o:p>
10.2.11<o:p></o:p>
10.2.12<o:p></o:p>
10.2.13.1<o:p></o:p>
10.2.13.2<o:p></o:p>
10.2.13.2<o:p></o:p>
10.2.14.1<o:p></o:p>
10.2.14.2<o:p></o:p>
10.3.1<o:p></o:p>
10.2.2<o:p></o:p>
10.2.2<o:p></o:p>
10.2.2<o:p></o:p>
10.2.2<o:p></o:p>
10.2.2<o:p></o:p>
10.2.2<o:p></o:p>
10.2.3<o:p></o:p>
10.2.4<o:p></o:p>
10.2.4<o:p></o:p>
10.2.4<o:p></o:p>
10.2.4.1<o:p></o:p>
10.2.4.1<o:p></o:p>
10.2.4.1<o:p></o:p>
10.2.4.2<o:p></o:p>
10.2.4.2<o:p></o:p>
10.2.4.3<o:p></o:p>
10.2.4.4<o:p></o:p>
10.2.4.5<o:p></o:p>
10.2.4.6<o:p></o:p>
10.2.4.6<o:p></o:p>
10.2.4.6<o:p></o:p>
10.2.4.6<o:p></o:p>
10.2.4.7<o:p></o:p>
10.2.5.1<o:p></o:p>
10.2.5.2<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.6<o:p></o:p>
10.2.7<o:p></o:p>
10.2.7<o:p></o:p>
10.2.8<o:p></o:p>
10.2.8<o:p></o:p>
10.2.8<o:p></o:p>
10.2.8<o:p></o:p>
10.2.8<o:p></o:p>
10.2.8.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.1<o:p></o:p>
10.2.8.2.2<o:p></o:p>
10.2.8.2.2<o:p></o:p>
10.2.8.2.2<o:p></o:p>
10.2.8.2.2<o:p></o:p>
10.2.8.2.2<o:p></o:p>
10.2.8.3<o:p></o:p>
10.2.8.4<o:p></o:p>
10.2.8.4<o:p></o:p>
10.2.9<o:p></o:p>
10.2.9.1<o:p></o:p>
10.2.9.2<o:p></o:p>
10.2.9.2<o:p></o:p>
10.2.9.4<o:p></o:p>
10.3.10.1<o:p></o:p>
10.3.10.1<o:p></o:p>
10.3.10.2<o:p></o:p>
10.3.10.2<o:p></o:p>
10.3.11<o:p></o:p>
10.3.11.1<o:p></o:p>
10.3.11.2<o:p></o:p>
10.3.11.2<o:p></o:p>
10.3.14<o:p></o:p>
10.3.14<o:p></o:p>
10.3.14.1<o:p></o:p>
10.3.14.1<o:p></o:p>
10.3.17<o:p></o:p>
10.3.17<o:p></o:p>
10.3.17<o:p></o:p>
10.4.1<o:p></o:p>
10.3.2.1<o:p></o:p>
10.3.2.1<o:p></o:p>
10.3.2.1<o:p></o:p>
10.3.2.1<o:p></o:p>
10.3.2.1<o:p></o:p>
10.3.2.2<o:p></o:p>
10.3.2.2<o:p></o:p>
10.3.2.2<o:p></o:p>
10.3.2.3<o:p></o:p>
10.3.2.3<o:p></o:p>
10.3.3<o:p></o:p>
10.3.4<o:p></o:p>
10.3.5<o:p></o:p>
10.3.6<o:p></o:p>
10.3.6<o:p></o:p>
10.3.6.1<o:p></o:p>
10.3.6.1<o:p></o:p>
10.3.6.1<o:p></o:p>
10.3.6.1<o:p></o:p>
10.3.6.2<o:p></o:p>
10.3.6.2<o:p></o:p>
10.3.6.2<o:p></o:p>
10.3.6.2<o:p></o:p>
10.3.6.2<o:p></o:p>
10.3.6.3<o:p></o:p>
10.3.7<o:p></o:p>
10.3.8<o:p></o:p>
10.3.8<o:p></o:p>
10.3.8<o:p></o:p>
10.3.9<o:p></o:p>
10.3.9<o:p></o:p>
10.3.9<o:p></o:p>
10.3.9<o:p></o:p>
10.3.9<o:p></o:p>
10.4.2<o:p></o:p>
10.4.2<o:p></o:p>
10.4.2<o:p></o:p>
10.4.2<o:p></o:p>
10.4.2<o:p></o:p>
10.4.3<o:p></o:p>
10.4.4.1<o:p></o:p>
10.4.4.1<o:p></o:p>
10.4.4.2<o:p></o:p>
4.1<o:p></o:p>
4.1<o:p></o:p>
4.2.1<o:p></o:p>
4.2.2<o:p></o:p>
4.3.1<o:p></o:p>
4.3.1.1<o:p></o:p>
4.3.1.2<o:p></o:p>

Please help! =)
 

Excel Facts

Back into an answer in Excel
Use Data, What-If Analysis, Goal Seek to find the correct input cell value to reach a desired result
Would you be able to present a shorter example showing:

1. your original set of numbers

2. after Excel has sorted them

3. how you would like them sorted
 
Upvote 0
So here is one specific example.
After sorting the column A, the list seems to go in order from 1-44 but immediately under 44.3(suppose to be the last number) 10.1.1 shows up and the numbers start listing from 10.1.1, 10.1.1.a, 10.1.1.b

43.9<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
44.1<o:p></o:p>
44.2<o:p></o:p>
44.3<o:p></o:p>
10.1.1<o:p></o:p>
10.1.1.a<o:p></o:p>

I'd really like to find out a way to put 10.1.1 and 10.1.1.a before 43.9 with the rest of the 10.1s
 
Upvote 0
Is the text aligned left or right or is the alignment unspecified?

It may be the case that Excel is reading 44.3 as a number and 10.1.1 as text and alphabetizing accordingly.
 
Upvote 0
Is the text aligned left or right or is the alignment unspecified?

It may be the case that Excel is reading 44.3 as a number and 10.1.1 as text and alphabetizing accordingly.

The numbers are aligned to the left.
Actually I forgot to also add that before 10.1.1, 1.3.1 shows up. So...

43.9
44.1
44.2
44.3
1.3.1
1.3.1.a
1.3.1.b
10.1.1
...
 
Upvote 0
The only way that I can see is to convert those values into a standardized format
e.g. 1.2.13.a > 001.002.013.00a
then sort and then convert back.

Code:
Sub test()
    Dim keyColumn As Range, keyArray As Variant
    Dim splitCount As Long, maxLen As Long
    Dim appendStr As String, formatStr As String
    Dim workStr As String, subString As String
    Dim Size As Long
    Dim i As Long, j As Long
    Dim outArray As Variant
    With Sheet1.Range("A:A")
        Set keyColumn = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
    
    Size = keyColumn.Rows.Count
    keyArray = Application.Transpose(keyColumn.Value)
    
    With keyColumn
        maxLen = Evaluate("max(LEN(" & .Address(, , , True) & "))")
        splitCount = Evaluate("max(LEN(" & .Address(, , , True) & ")-len(SUBSTITUTE(" & .Address(, , , True) & ", ""."", """")))")
    End With
    
    outArray = keyArray
    appendStr = String(splitCount, ".")
    formatStr = String(maxLen, "0")
    
    For i = 1 To Size
        outArray(i) = keyArray(i) & appendStr
        workStr = vbNullString
        For j = 0 To splitCount
            subString = Split(outArray(i), ".")(j)
            subString = Right(formatStr & subString, maxLen)
            workStr = workStr & "." & subString
        Next j
        outArray(i) = Mid(workStr, 2)
    Next i
    
    Range("C1").Resize(UBound(outArray)).Value = Application.Transpose(outArray)
    
    Rem SORT HERE
    
    For i = 1 To Size
        workStr = vbNullString
        For j = 0 To splitCount
            subString = Split(outArray(i), ".")(j)
            If IsNumeric(subString) Then
                If subString = formatStr Then
                    subString = vbNullString
                Else
                    subString = Format(Val(subString), "@")
                End If
            Else
                subString = Replace(subString, "0", vbNullString)
            End If
            workStr = workStr & "." & subString
        Next j
        For j = 1 To splitCount
            workStr = Replace(workStr, "..", ".")
        Next j
        If workStr Like "*." Then
            workStr = Left(workStr, Len(workStr) - 1)
        End If
        outArray(i) = Mid(workStr, 2)
    Next i
    
    Range("E1").Resize(UBound(outArray)).Value = Application.Transpose(outArray)
    
End Sub
 
Upvote 0

Forum statistics

Threads
1,224,537
Messages
6,179,408
Members
452,912
Latest member
alicemil

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top