【VBA】テーブル化された表を並び替え(ソート)する

VBAで
 ・テーブル化された表を並び替え(ソート)
できます!

PR

VBAコード

ここでは例として、
 ・シート「sample」上の
 ・テーブル化された表「テーブルA」を
 ・列「名前」で昇順で並び替え(ソート)
します。

テーブル化された表「テーブルA」
テーブル化された表「テーブルA」
Option Explicit

Sub sample()

    Dim ws As Worksheet
    Dim tableName As String
    Dim columnName As String
    Dim table As ListObject
    
    '対象シート
    Set ws = Worksheets("sample")
    'テーブル名
    tableName = "テーブルA"
    '列名
    columnName = "名前"
        
    'テーブルを取得
    Set table = ws.listObjects(tableName)
    '現在のテーブルのソートの設定をクリア
    table.Sort.SortFields.Clear
    'テーブルをソート
    table.Range.Sort key1:=table.ListColumns(columnName).Range, order1:=xlAscending, Header:=xlYes
    
End Sub

以下を指定します(11~15行目)。
※状況に応じて任意の値を指定してください。

・対象シート
・テーブル名
・列名

現在のテーブルのソートの設定をクリアします(20行目)。
※「ListObjectオブジェクト」の「Sort」プロパティにより、「Sortオブジェクト」を取得します。
※「Sortオブジェクト」の「SortFields」プロパティにより、「SortFieldsオブジェクト」を取得します。
※「SortFieldsオブジェクト」の「Clear」メソッドにより、並び替え(ソート)の設定をクリアします。

テーブルをソートします(22行目)。
※「ListObjectオブジェクト」の「Range」プロパティにより、「Rangeオブジェクト」を取得します。
※「Rangeオブジェクト」の「Sort」メソッドにより、テーブルをソートします。

「Sort」メソッドの引数「order1」に「xlAscending」を指定することで、「昇順」でソートします(22行目)。
※「降順」でソートしたい場合は「xlDescending」を指定します。

PR

実行結果

テーブル化された表を並び替え(ソート)できました。
※列「名前」で並び替え(ソート)できました。

並び替え(ソート)前
並び替え(ソート)
並び替え(ソート)後
並び替え(ソート)
PR

参考①

表のテーブル化については、以下の記事をご確認ください。

PR

参考②

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

「ListObjectオブジェクト」の「Sort」プロパティ


「Sortオブジェクト」の「SortFields」プロパティ


「SortFieldsオブジェクト」の「Clear」メソッド


「ListObjectオブジェクト」の「Range」プロパティ


Rangeオブジェクト」の「Sort」メソッド