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

【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の作成を受け付けています。
ご相談はこちらから

VBA

Posted by やろまい