配列に格納されている数値を並べ替えるには、どうしたらいいでしょう。もちろん、ネットを検索すれば、バブルソートだとかクィックソートだとか、その手のアルゴリズムがたくさん見つかります。でも、Excel VBAでやるのなら、簡単な方法があります。
まず思いつくのは、配列のデータを一度ワークシートに展開して、その表を並べ替えるやり方です。文章で書くと、すごく手間がかかって、さぞ時間がかかるような気もしますが、実際にはめっちゃ高速です。具体的なコードは、かなり昔に書いた下記のページをご覧ください。
今回は、もっと簡単な方法です。ただし、条件が1つ。配列内のデータは数値であること。文字列を並べ替えることはできません。これは次のようにします。あまりに簡単な考え方なので、解説は省略します。いえ、決して手抜きではありません。
Sub Sample1() Dim A(100) As Long, B(100) As Long, i As Long For i = 1 To 100 A(i) = Int(Rnd * 10000) ''乱数をセット Next i For i = 1 To 100 B(i) = WorksheetFunction.Small(A, i) ''並べ替える(昇順) Next i For i = 1 To 100 Cells(i, 1) = B(i) ''確認 Next i End Sub
もちろん、降順で並べ替えるには、LARGE関数を使います。