|
実データは数値もピリオドも半角ですね ? で、日付形式になっているわけ
ではなくて、単に数値とピリオドを打ち込んだだけの値であるとします。
その範囲を選択して、以下のコードを実行してみて下さい。
長くて分かりにくいコードですが、いちおうこちらのテストは成功しています。
Sub MySort()
Dim C As Range
Dim Ary As Variant
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
If .Columns.Count > 1 Then Exit Sub
If .Areas.Count > 1 Then Exit Sub
If InStr(1, .Cells(1).Value, ".") = 0 Then Exit Sub
Application.ScreenUpdating = False
.Offset(, 1).EntireColumn.Resize(, 2).Insert xlShiftToRight
.TextToColumns DataType:=xlDelimited, Other:=True, _
OtherChar:="."
.Resize(, 3).Sort Key1:=.Columns(1), Order1:=xlAscending, _
Key2:=.Columns(2), Order2:=xlAscending, Key3:=.Columns(3), _
Order3:=xlAscending, Header:=xlGuess, _
Orientation:=xlSortColumns
End With
For Each C In Selection
With WorksheetFunction
Ary = .Transpose(.Transpose(C.Resize(, 3).Value))
End With
C.Value = Join(Ary, ".")
Next
Selection.Offset(, 1).EntireColumn.Resize(, 2).Delete xlShiftToLeft
Application.ScreenUpdating = True
End Sub
|
|