Excel 如何对具有特定数据的列进行排序/

Excel 如何对具有特定数据的列进行排序/,excel,Excel,我尝试使用以下数据对列进行排序: 输入: 11/2 11/3a 11/2b 3/1 2/5 2/8 3/5 应如何分类: 2/5 2/8 3/1 3/5 11/2 11/2b 11/3b 单元格的格式始终为number1/number2[可选字母] 应该先按数字1,然后按数字2,再按字母排序。我如何才能做到这一点?方法1-Excel 创建两个辅助列(B列和C列) B列公式:=左(A1,FIND(“/”,A1)-1) C列公式:=MID(A1,(FIND(“/”,A1)+1,(LEN(A1)-

我尝试使用以下数据对列进行排序:

输入:

11/2
11/3a
11/2b
3/1
2/5
2/8
3/5
应如何分类:

2/5
2/8
3/1
3/5
11/2
11/2b
11/3b
单元格的格式始终为number1/number2[可选字母]


应该先按数字1,然后按数字2,再按字母排序。我如何才能做到这一点?

方法1-Excel

创建两个辅助列(B列和C列)

B列公式:
=左(A1,FIND(“/”,A1)-1)

C列公式:
=MID(A1,(FIND(“/”,A1)+1,(LEN(A1)-(FIND(“/”,A1)))

选择所有三列并按照以下部分进行自定义排序

主页-编辑-排序和筛选-自定义排序-添加级别

排序:

方法2-VBA

Option Explicit

Sub test()

    Dim LastRowA As Long, i As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastRowA

            .Range("B" & i).Value = Split(.Range("A" & i).Value, "/")(0)
            .Range("C" & i).Value = Split(.Range("A" & i).Value, "/")(1)

        Next i

        .Sort.SortFields.Clear
        .Sort.SortFields.Add2 Key:=Range("B1:B" & LastRowA), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("C1:C" & LastRowA), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

        With .Sort
            .SetRange Range("A1:C" & LastRowA)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    End With

End Sub
结果:


使用辅助列或VBA。您也可以使用Excel 2010中提供的
Power Query
。如果您要使用内置选项(这非常好),我将使用文本到列而不是公式。投了赞成票,但我想说你已经给了OP一个答案,因为他只付出了极小的努力。我还添加了VBA代码,在我看来这是更好的选择,如果你选择VBA,你不需要循环。有没有关于如何吐出值以避免循环的IDE?当然
Dim rng as range
然后
Set rng=.range(“A1:A”&LastRowA)
然后
rng.TextToColumns Destination:=.Range(“B1”),Other:=True,OtherChar:=“/”