Excel VBA 配列ソートで、複数のデータを一つの配列に格納し、その配列を並べ替える操作です。VBAでは配列を使ってデータを操作・処理することができますが、配列自体には組み込みのソートメソッドがないため、独自のソート処理を使用する必要があります。具体的な使い方や、注意点やサンプルコードを紹介します。
日常業務でExcelを多用し、手動作業を減らしたいと考えている方へ
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
以下のようなシーンで利用されます。
1.ワークシートから配列にデータを取得し並べ替える
例えば、セルの範囲を配列に取り込み、並べ替えてから再びシートに書き戻す
2.メモリ内での高速処理
シートへの書き込み・読み込みは遅いので、配列内でデータを操作して高速化したいときに便利です。
ExcelVBAには配列を直接ソートする組み込み関数がないため、自分でバブルソート、クイックソートなどを実装するか、WorksheetFunction.Sortを使ってシートを利用してソートする方法があります。
1.大規模なデータの処理速度
配列が大きいと、処理速度に影響します。
2.並べ替えロジック
自力で処理を実装する場合は、ロジックの正確さが必要です。特に昇順・降順や、文字列と数値の扱いに注意しましょう。
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
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
ワークシートのデータを配列に取り込み、配列をソートして再書き込み
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で自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。