【VBA】並べ替えをする方法(Sortメソッド/Sortオブジェクト)
今回はシート上のデータを並べ替えをする方法を紹介します。
VBAで並べ替えする方法は↓の2種類があります。
- WorksheetのSortオブジェクト (Excel2007以降)
- Range.Sortメソッド (Excel2003以前も使用可能)
Excel2007以降はWorksheetのSortオブジェクトが推奨となります。 (Range.Sortメソッドも使用は可能です)
Excel2003以前はほとんど利用されていないと思いますが、念のため両方とも使い方を紹介したいと思います。
WorksheetのSortオブジェクト(Excel2007以降)
サンプルとして図のようにA列をキーに、並べ替えするプログラムを紹介します。
Sub Sample1()
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=ActiveSheet.Columns(1), Order:=xlAscending 'A列を昇順ソート
.SetRange ActiveSheet.Range("A:E") '並べ替え範囲
.Header = xlYes '見出しの有無
.Apply '実行
End With
End Sub
WorksheetのSortオブジェクトを使うためには、まずSortオブジェクトを取得する必要があります。
サンプルコードではActiveSheet.SortとしてアクティブシートのSortオブジェクトを取得しています。
その後、SortFields.Addによって並べ替えの条件を指定しています。
あとは並べ替え範囲や見出しの有無を指定してから、Applyメソッドによって実行すれば完了です。
Range.Sortメソッド(Excel2003以前も使用可能)
Sub Sample2()
ActiveSheet.Range("A:E").Sort _
Key1:=ActiveSheet.Columns(2), _
Order1:=xlAscending, _
Header:=xlYes
End Sub
Range.Sortメソッドを使う場合、並べ替えしたい範囲(ここではA:E)に対してSortメソッドを実行します。
あとはKeyやOrderなどSortメソッドの引数に並べ替え条件を指定すれば完了となります。