今回は、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を使えば、よく使う並べ替えもワンクリックで実行できるようになります。このコードを応用していただくと、さまざまな並べ替えを行うことができます。業務の効率化に直結するので、ぜひ使ってみてください!
コメント