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

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

Dim sArray()

このときに配列の並び順を昇順や降順に変えたいことがあります。

そのようなときに使う関数です。

以下のマクロは配列の内容を昇順(小さい順)に並べ直します。

この配列ソート処理はバブルソートの仕組みで実装しています。

バブルソートは単純な仕組みではありますが、そこまで高速ではありません。

もっと高速なアルゴリズムはありますが、ちょっとした処理であれば十分に利用できます。

このマクロは1次元配列用です。

隣り合う要素の大小を比較して、小さい順に並べなおします。

要素の先頭から最後までの入れ替えを1回行うと一番最後の要素にそのループでの最大値が設定されます。

よって、次のループでは一番最後の要素まで比較せずに済むため、その分を減らしています。(iArCnt2 = iArCnt2 – 1の部分です)


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

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

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

是非活用してください。

関連記事

サブコンテンツ

このページの先頭へ