このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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


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

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

  1. WorksheetのSortオブジェクト (Excel2007以降)
  2. Range.Sortメソッド (Excel2003以前も使用可能)

Excel2007以降はWorksheetのSortオブジェクトが推奨となります。 (Range.Sortメソッドも使用は可能です)

Excel2003以前はほとんど利用されていないと思いますが、念のため両方とも使い方を紹介したいと思います。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

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上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/11/21 14:41:17時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい