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:=“/”