配列のデータを並べ替える|Excel VBA |
配列のデータを並べ替えるには、クイックソートやバブルソートなど、いろいろなアルゴリズムがありますが、Excelのマクロで並べ替える場合は、配列内のデータをいったんワークシートに展開して、Excelの並べ替え機能を使うという手があります。
もし、配列内のデータが数値だった場合、さらに簡単な方法があります。
ワークシート関数の、SMALL関数やLARGE関数を使う方法です。
次のマクロは、配列orgArrayの数値データを昇順に並べ替えて、配列srtArrayに格納します。
Sub Sample()
Dim orgArray(9) As Long
Dim srtArray(9) As Long
Dim i As Long
Randomize
For i = 0 To 9 '乱数をセットする
orgArray(i) = Int(Rnd * 1000 + 1)
Next i
For i = 0 To 9 '昇順で並べ替える
srtArray(i) = WorksheetFunction.Small(orgArray, i + 1)
Next i
For i = 0 To 9 '結果を表示する
Debug.Print srtArray(i)
Next i
End Sub