SortArray2D|二次元配列を指定列で並び替える | Excel VBA
- yuji fukami
- 10 時間前
- 読了時間: 2分

<概要 (並び替え)>
SortArray2D は、二次元配列を指定した列を基準として並び替えるための汎用プロシージャです。
セル範囲を直接並び替えるのではなく、配列上で完結して処理を行うため、高速かつ柔軟にデータを並び替えることができます。数値だけでなく文字列を含む配列にも対応しており、昇順・降順の切り替えも可能です。
内部処理では、指定列を一次元配列として抽出し、その配列を基準に並び替え順を決定します。Excel 2021 以降または Microsoft 365 環境では、WorksheetFunction.Sort を利用して並び替えを行い、それ以外の環境ではクイックソートを用いた独自処理に自動的に切り替わります。
そのため、Excel のバージョンによって内部処理は異なりますが、いずれの場合でも
二次元配列を安全に並び替えることができます。
帳票データ、CSV 読み込み後の配列加工、データベース風の配列処理などで特に有効です。
<実行例>
実行例のサンプルコードは次の通りです
実行結果のイミディエイトウィンドウは次のようになります。

まず 「元データ」 では、ID・名前・点数の3列を持つ二次元配列が、定義した順番どおりに出力されます。
次に 第2列(名前)を基準に昇順で並び替え すると、配列全体が 名前の五十音順 になるように行単位で入れ替わります。このとき、並び替えの基準は「名前」ですが、ID や点数も同じ行の情報として一緒に移動している点が確認できます。
続いて 第3列(点数)を基準に降順で並び替え すると、点数の高い行から順に配列が並び替えられます。同じ点数(例:90点)が複数ある場合でも、各行のデータが崩れることなく、行単位で正しく並び替えられていることが分かります。
このように SortArray2D を使うことで、「どの列を基準にするか」だけを切り替えるだけで、二次元配列を柔軟に並び替えられることが確認できます。
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・IsArray2D → https://www.softex-celware.com/post/isarray1d
・IsArray2DStart1 → https://www.softex-celware.com/post/isarray1d
・ExtractColArray2D → https://www.softex-celware.com/post/extractcolarray2d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


コメント