スポンサーリンク

【VBA】Sortの基本構文(1列昇順)の使い方と解説

Excel VBAでは Sortメソッド を使うことで、シート上のデータを自動で並び替えることができます。
この記事では、もっとも基本的な「1列を昇順に並び替える方法」を解説します。


スポンサーリンク

1. Sortの基本構文

VBAで並び替えを行うときは、以下のように書きます。

Range("並び替え範囲").Sort _
    Key1:=Range("基準列"), _
    Order1:=xlAscending, _
    Header:=xlYes
  • Range(“並び替え範囲”)
    並び替える対象となるセル範囲を指定します。
  • Key1:=Range(“基準列”)
    並び替えの基準となる列(1列)を指定します。
  • Order1:=xlAscending
    並び替えの順序を指定します。
    • xlAscending → 昇順(小さい順、あいうえお順)
    • xlDescending → 降順(大きい順、わおえうい順)
  • Header:=xlYes
    先頭行を「見出し行」として扱うかどうかを指定します。
    • xlYes → 1行目は見出し(並び替え対象から除外)
    • xlNo → すべてデータとして扱う

スポンサーリンク

2. 実用例:売上データを昇順に並び替える

以下のような売上データを「売上金額(B列)」で昇順に並び替える例を示します。

商品名売上金額
りんご300
みかん120
バナナ500
ぶどう250

VBAコード

Sub 売上昇順に並び替え()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '並び替え範囲全体を指定(A1:B5)
    ws.Range("A1:B5").Sort _
        Key1:=ws.Range("B2"), _
        Order1:=xlAscending, _
        Header:=xlYes
End Sub

スポンサーリンク

3. コード解説

  1. Range("A1:B5")
    データ全体の範囲を指定します。見出しも含めて指定するのが一般的です。
  2. Key1:=ws.Range("B2")
    並び替えの基準を「B列(売上金額)」にしています。
    • B列のどのセルを指定しても列単位で認識されます。
    • B1を指定してもOKですが、Header:=xlYesの場合は1行目を見出しとして扱うため、B2を指定するのが推奨です。
  3. Order1:=xlAscending
    昇順で並び替えます。小さい数字 → 大きい数字へ。
  4. Header:=xlYes
    A1:B1は見出しとして扱い、並び替え対象から除外します。

スポンサーリンク

4. 実行結果

商品名売上金額
みかん120
ぶどう250
りんご300
バナナ500

売上金額が小さい順に並び替えられました。


5. よくあるつまずきポイント

  • 範囲に見出しを含めずに指定してしまうと、見出しがデータ扱いされる
    → Header:=xlYes を設定し、範囲は必ず見出しを含めて指定しましょう。
  • Key1に列全体(例:Range("B:B"))を指定するとエラーになることがある
    → 並び替える範囲内のセル(例:Range("B2"))を指定するのが正しい書き方です。

6. まとめ

  • VBAのSortメソッドを使えば、1列を簡単に昇順に並び替え可能
  • Key1 で基準列、Order1 で昇順・降順を指定する
  • Header を正しく指定することで見出しを守れる

この基本を理解すれば、応用として「降順」「複数列での並び替え」などもスムーズに習得できます。

コメント

タイトルとURLをコピーしました