1

我有一个包含以下字符串的范围:

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

4

3 回答 3

0

我会使用 mid 函数将数字分成另一列,即您的最后一个 + 1 并对其进行排序。


编辑:我不在我的电脑上,但我认为你这样做的唯一方法是设置一个宏:

  1. 按前 9 个过滤您的工作表。
  2. 在第 2 行之前剪切并插入它们。
  3. 自行排序。
  4. 然后删除过滤器并按照上面的方式对其余部分进行排序。
于 2013-02-27T12:22:18.587 回答
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
于 2013-02-28T09:20:56.697 回答
0

感谢每一个人的贡献。对于用户,我在阅读您的建议之前找到了我的解决方案。无论如何感谢你的努力

我的解决方案:

  • 将 str 拆分为“_”
  • 在文件名旁边写第二个索引 order 2nd cols by then col 只有数字
  • 用数字清洁 col
于 2013-02-28T10:18:42.683 回答