教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでセル範囲内を並べ替え(キーが1つの場合)する方法

構文

構文は以下の通りです。

Range("範囲").Sort Key1:=Range("キー範囲"), Order1:=xlAscending, Header:=xlYes

解説

Range("範囲")は、並べ替えを行いたいセル範囲を指定します。例えば、A1からB10までの範囲を並べ替えたい場合は、Range("A1:B10")と指定します。Key1:=Range("キー範囲")は、並べ替えの基準となる列またはセルを指定します。例えば、A列の値に基づいて並べ替えたい場合は、Range("A1:A10")と指定します。Order1:=xlAscendingは、並べ替えの順序を指定します。昇順(小さい順)に並べ替える場合はxlAscending、降順(大きい順)に並べ替える場合はxlDescendingを使います。
Header:=xlYes: 範囲の最初の行をヘッダー(タイトル行)として扱う場合はxlYes、ヘッダーがない場合はxlNoを使います。

プログラミング例

具体的なプログラミング例を紹介します。

Sub セル範囲の並べ替え()
    ' B2:B10の範囲をA列の値で昇順に並べ替える
    Range("A1:B10").Sort Key1:=Range("A1:A10"), Order1:=xlAscending, Header:=xlYes
End Sub

上記のプログラムは、A1からB10の範囲を、A列の値を基準に昇順で並べ替えます。

まとめ

Range("範囲").Sortを使って、指定した範囲のセルを並べ替えることができます。並べ替えの基準となる列や並べ替え順序、ヘッダーの有無を指定することで、希望通りに並べ替えることが可能です。