我有一个包含以下字符串的范围:
step_1,step_10,step_3,step_2
使用以下代码
input_sh.Activate
With ActiveSheet
.Range("H2:H20").Select
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("H2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers 'xlSortNormal
With .Sort
.SetRange Range("H2:H20")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
step_10,step_1,step_2,step_3
但我想得到
step_1,step_2,step_3,step_10
答案 0 :(得分:0)
我会将数字分成另一列,你的最后一个+ 1,使用mid函数并对其进行排序。
编辑:我不在我的电脑上,但我认为你这样做的唯一方法是设置一个宏:
答案 1 :(得分:0)
你的字符串有下划线后跟数字。如果这将是您的字符串的格式,您可以使用转换文本将字符串拆分为使用“_”作为分隔符的列。稍后您可以排序和连接以获取排序的字符串列表。
Sub Sample()
Columns(1).Copy Columns(3)
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="_", FieldInfo:=Array(Array(1, 1), Array(2, 1))
Columns("D:D").Sort Range("D1")
i = 1
Do While Not IsEmpty(Range("C" & i))
Range("B" & i) = Range("C" & i) & "_" & Range("D" & i)
i = i + 1
Loop
End Sub
答案 2 :(得分:0)
我的解决方案: