|
あー・・すいません。先に提示したコードでは、数値の並び替えは
出来ますが、並び替える前の文字列と単純に繋げてしまったため、
インチキな処理結果になってしまいました。
で、やはり便利なExcelのSort機能を使うことにして、以下のような
コードに変更します。今度は「いったん数値部分をデータの前に持ってくる」
だけです。それで並び替えはうまくいきますから、もう一度ループして
元のように"文字列+3桁の数値"に戻します。作業列を使わずにやるとすれば、
おそらく最もシンプルなコードになると思います。
Sub Test_MyDataSort2()
Dim MyR As Range, C As Range
Dim Lg As Integer
Set MyR = Range("A1", Range("A65536").End(xlUp))
For Each C In MyR
Lg = Len(C.Value) - 3
C.Value = Right(C.Value, 3) & Left(C.Value, Lg)
Next
MyR.Sort Key1:=MyR.Cells(1), Order1:=xlAscending, _
Header:=xlGuess, Orientation:=xlSortColumns
For Each C In MyR
Lg = Len(C.Value) - 3
C.Value = Right(C.Value, Lg) & Left(C.Value, 3)
Next
Set MyR = Nothing
End Sub
|
|