| 
    
     |  | ▼もーはん さん: 
 [E:F]列のデータを [A:B]列に移動してしまえば
 ふつうにソートできますよね?
 で、
 [E:F]列のデータには自分がE:F列から移動してきたデータだという
 「しるし」を付けておいて、
 [A:B]列で並び替えておいてから、しるしのあるデータだけ、
 元の列に戻せばいいわけです。
 
 下の例では、この「マーキング」に、
 Rangeオブジェクトに IDプロパティというのを利用しています。
 
 Option Explicit
 
 Sub Try1()
 Dim c As Range
 Dim r As Range
 Set r = ActiveSheet.UsedRange.Resize(, 6)
 For Each c In r.Columns(5).Cells
 'E列データであることをIDプロパティにメモしておく
 c.ID = "E"
 Next
 '[E:F]列を [A:B]列に移動
 r.Columns(5).Resize(, 2).Cut r.Item(r.Rows.Count + 1, 1)
 '[A:B]列データを A列をキーにしてSort
 Set r = ActiveSheet.UsedRange.Resize(, 2)
 r.Sort r.Columns(1), Header:=xlNo
 
 '[A]列データのうちIDのあるものを 元のE列に戻す
 For Each c In r.Columns(1).Cells
 If Len(c.ID) Then
 c.Resize(, 2).Cut c.Offset(, 4)
 End If
 Next
 
 End Sub
 
 |  |