VBAの配列をバブルソートで並べ替え

VBAで配列を使うことがあります。

Dim sArray()

このときに配列の並び順を昇順や降順に変えたいことがあります。
そのようなときに使う関数です。
以下のマクロは配列の内容を昇順(小さい順)に並べ直します。

この配列ソート処理はバブルソートの仕組みで実装しています。
バブルソートは単純な仕組みではありますが、そこまで高速ではありません。
もっと高速なアルゴリズムはありますが、ちょっとした処理であれば十分に利用できます。

このマクロは1次元配列用です。
隣り合う要素の大小を比較して、小さい順に並べなおします。
要素の先頭から最後までの入れ替えを1回行うと一番最後の要素にそのループでの最大値が設定されます。
よって、次のループでは一番最後の要素まで比較せずに済むため、その分を減らしています。(iArCnt2 = iArCnt2 – 1の部分です)


昇順ではなく降順にしたい場合は、大小比較の部分の > を < に変更し、
大小の入れ替え処理を反対にすれば可能になります。

利用方法はこのような感じになります。

ソート後は、以下の順になります。

是非活用してください。

関連記事

サブコンテンツ

このページの先頭へ