OfficeType

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

image-01

image-02

コードの説明

.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

image-03

image-04