VBA~データを並び替えよう~Excel
データを並び替えたい時はRange.Sortメソッドを使います。下のコードを実行するとD列の数値をキーとして降順に並び替えます。
Sub test1() With Worksheets("Sheet1").Sort .SortFields.Clear .SortFields.Add Key:=Range("D1"), Order:=xlDescending .SetRange Range("A1:D7") .Header = xlYes .Apply End With End Sub
コードの説明
.SortFields.Clear
前回の並び替えの条件が反映されているのでクリアしています。
.SortFields.Add Key:=Range("D1"), Order:=xlDescending
並び替えのキーにD列を指定しています。パラメーターOrderで降順か昇順か指定します。降順がxlDescending、昇順がxlAscendingになります。
.SetRange Range("A1:D7")
並び替える範囲を指定しています。
.Header = xlYes
最初の行にヘッダー情報が含まれるかどうかを指定します。見出しも並び替えの対象になるのでxlYesにしてあります。
.Apply
並び替えが実行されます。
複数条件
並び替えの条件を複数にしたい時は.SortFields.Addを複数入れます上の方が優先順位が高くなります。下のコードを実行するとD列の所持金の項目で降順でデータが並び替えられ、同額の場合はB列の班の項目で昇順に並び替えられます。
Sub test2() With Worksheets("Sheet1").Sort .SortFields.Clear .SortFields.Add Key:=Range("D1"), Order:=xlDescending .SortFields.Add Key:=Range("B1"), Order:=xlAscending .SetRange Range("A1:D7") .Header = xlYes .Apply End With End Sub