【VBA】並べ替えをする方法(Sortメソッド/Sortオブジェクト)


今回はシート上のデータを並べ替えをする方法を紹介します。

VBAで並べ替えする方法は↓の2種類があります。

  1. WorksheetのSortオブジェクト (Excel2007以降)
  2. 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メソッドの引数に並べ替え条件を指定すれば完了となります。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/06/06 16:32:04時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい