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

文字列にはアンダースコアの後に数字が続きます。それが文字列の形式になる場合は、区切り文字として「_」を使用してテキストを列に変換することで、文字列を単純に分割できます。後でソートおよび連結して、ソートされた文字列のリストを取得できます。

ここに画像の説明を入力

 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

mid 関数を使用して数値を別の列 (最後の + 1) に分割し、それを並べ替えます。


編集:私は自分のPCにいませんが、これを行う唯一の方法は、次のようなマクロをセットアップすることだと思います:

  1. 最初の 9 でシートをフィルター処理します。
  2. 行 2 の前にそれらをカットして挿入します。
  3. これらを自分で並べ替えます。
  4. 次に、フィルターを削除し、上記のように残りを並べ替えます。
于 2013-02-27T12:22:18.587 に答える
0

あなたの貢献に感謝します。ユーザーへ あなたの提案を読む前に解決策を見つけました。とにかくあなたの努力に感謝します

私の解決策:

  • "_" の str を分割する
  • ファイル名の隣に 2 番目のインデックスを書き込みます
  • 数字で列をきれいにする
于 2013-02-28T10:18:42.683 に答える