【ExcelVBA・マクロ】Excelデータを自動で並べ替えるマクロの作り方【VBA初心者】

ExcelVBA

今回は、VBAでExcelのデータを自動的に並べ替える方法をご紹介します。Excelで毎回手作業で並べ替えるのが面倒…という方には特におすすめです!

マクロを使うことによって一瞬でソートすることができます。

エクセルデータを自動で並べ替えるマクロ

シート確認

今回はC列(年齢)の昇順(若い順)で並べ替えていきたいと思います。

並べ替えのVBAコード

Sub sortAge()

    Dim ws As Worksheet
    Dim lastRow As Long

    Set ws = Worksheets("Sheet1")

    ' データ範囲の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' 並べ替え実行(C列昇順)
    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=ws.Range("C2:C" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending

        .SetRange ws.Range("A1:C" & lastRow)
        .Header = xlYes
        .Apply
    End With

    MsgBox "並べ替えが完了しました。", vbInformation

End Sub

コードの詳細

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

A列の一番下から上方向に検索し、最後にデータが入っている行を取得。今回であれば最終行は「鈴木」が入力されている5行目です。

.SortFields.Clear

並べ替え設定をクリア。※並べ替え設定がされている状態で実行するとエラーが発生する可能性もあるため、例え並べ替えが設定されていなくても念のためクリアコードは入れておきましょう。

.SortFields.Add Key:=ws.Range("C2:C" & lastRow), _
            SortOn:=xlSortOnValues, Order:=xlAscending
  • Key:並べ替え対象のキー(この例では C列[年齢])。
  • SortOn:何を基準に並べ替えるか(xlSortOnValues は値でのソート)。
  • Order:並べ替えの順序。xlAscending で昇順、xlDescending で降順。
.SetRange ws.Range("A1:C" & lastRow)
.Header = xlYes
.Apply
  • SetRange:並べ替える範囲を設定。A1〜C最終行までのデータを設定。
  • Header :1行目が見出し(ヘッダー)にするか設定。xlYesでヘッダーにする。XlNoでヘッダーにしない。
  • Apply:設定した並べ替えを適用する。

実行

マクロを実行するとデータがC列(年齢)の昇順(若い順)で並び変わります。

まとめ

いかがでしたでしょうか。VBAを使えば、よく使う並べ替えもワンクリックで実行できるようになります。このコードを応用していただくと、さまざまな並べ替えを行うことができます。業務の効率化に直結するので、ぜひ使ってみてください!

コメント

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