|
▼もーはん さん:
[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
|
|