Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17285 / 76732 ←次へ | 前へ→

【64903】Re:列によるソート
発言  kanabun  - 10/3/25(木) 23:10 -

引用なし
パスワード
   ▼もーはん さん:

[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

0 hits

【64902】列によるソート もーはん 10/3/25(木) 22:10 質問
【64903】Re:列によるソート kanabun 10/3/25(木) 23:10 発言
【64947】Re:列によるソート もーはん 10/3/29(月) 10:09 質問
【64951】Re:列によるソート kanabun 10/3/29(月) 13:18 発言
【64953】Re:列によるソート もーはん 10/3/29(月) 15:47 発言
【64954】Re:列によるソート kanabun 10/3/29(月) 16:42 発言
【64961】Re:列によるソート もーはん 10/3/30(火) 13:02 発言
【64962】Re:列によるソート kanabun 10/3/30(火) 14:03 発言
【64965】Re:列によるソート もーはん 10/3/30(火) 17:29 お礼
【64958】Re:列によるソート Hirofumi 10/3/29(月) 23:31 回答

17285 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free