
Excel VBA 配列ソートで、複数のデータを一つの配列に格納し、その配列を並べ替える操作です。VBAでは配列を使ってデータを操作・処理することができますが、配列自体には組み込みのソートメソッドがないため、独自のソート処理を使用する必要があります。具体的な使い方や、注意点やサンプルコードを紹介します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
Excel VBA 配列ソートの利用
以下のようなシーンで利用されます。
1.ワークシートから配列にデータを取得し並べ替える
例えば、セルの範囲を配列に取り込み、並べ替えてから再びシートに書き戻す
2.メモリ内での高速処理
シートへの書き込み・読み込みは遅いので、配列内でデータを操作して高速化したいときに便利です。
Excel VBA 配列ソートの使い方とポイント
ExcelVBAには配列を直接ソートする組み込み関数がないため、自分でバブルソート、クイックソートなどを実装するか、WorksheetFunction.Sortを使ってシートを利用してソートする方法があります。
1.大規模なデータの処理速度
配列が大きいと、処理速度に影響します。
2.並べ替えロジック
自力で処理を実装する場合は、ロジックの正確さが必要です。特に昇順・降順や、文字列と数値の扱いに注意しましょう。
Excel VBA 配列ソートのサンプルコード
Array関数で配列を作成し、配列のソートで数値を昇順に並べ替えます。Debug.Printを使って並べ替え後の配列を確認できます。
Option Explicit
Sub SortArray()
Dim arr As Variant
Dim i As Integer, j As Integer
Dim temp As Variant
' 配列に数値を代入
arr = Array(10, 5, 8, 1, 4)
' バブルソートを使って配列を昇順に並べ替える
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) > arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
' ソート後の配列を表示
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
ワークシートのデータを配列に取り込み、配列をソートして再書き込み
Option Explicit
Sub SortArrayFromWorksheet()
Dim arr As Variant
Dim i As Long, j As Long
Dim temp As Variant
Dim ws As Worksheet
' シートからデータを取得(A1:A5の範囲)
Set ws = ThisWorkbook.Sheets("Sheet1")
arr = ws.Range("A1:A5").Value
' バブルソートを使って配列を昇順に並べ替える
For i = LBound(arr, 1) To UBound(arr, 1) - 1
For j = i + 1 To UBound(arr, 1)
If arr(i, 1) > arr(j, 1) Then
temp = arr(i, 1)
arr(i, 1) = arr(j, 1)
arr(j, 1) = temp
End If
Next j
Next i
' 並べ替えたデータをシートに書き戻す
ws.Range("A1:A5").Value = arr
End Sub
ExcelVBAで配列のソートを行う場合、自分でソートアルゴリズムを実装する必要があります。配列を使用すると、ワークシートに直接操作するよりも効率的にデータを処理できるため、大量のデータや複雑な処理を行う際に役立ちます。
「Excel VBAで自動化するコードのベースが習得できる解説書」