top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

SortArray2D|二次元配列を指定列で並び替える | Excel VBA

SortArray2D|二次元配列を指定列で高速ソート | Excel VBA

<概要 (並び替え)>

 SortArray2D は、二次元配列を指定した列を基準として並び替えるための汎用プロシージャです。


 セル範囲を直接並び替えるのではなく、配列上で完結して処理を行うため、高速かつ柔軟にデータを並び替えることができます。数値だけでなく文字列を含む配列にも対応しており、昇順・降順の切り替えも可能です。


 内部処理では、指定列を一次元配列として抽出し、その配列を基準に並び替え順を決定します。Excel 2021 以降または Microsoft 365 環境では、WorksheetFunction.Sort を利用して並び替えを行い、それ以外の環境ではクイックソートを用いた独自処理に自動的に切り替わります。


 そのため、Excel のバージョンによって内部処理は異なりますが、いずれの場合でも

二次元配列を安全に並び替えることができます。

 帳票データ、CSV 読み込み後の配列加工、データベース風の配列処理などで特に有効です。


<実行例>

 実行例のサンプルコードは次の通りです


 実行結果のイミディエイトウィンドウは次のようになります。


イミディエイトウィンドウの実行結果
イミディエイトウィンドウの実行結果

 まず 「元データ」 では、ID・名前・点数の3列を持つ二次元配列が、定義した順番どおりに出力されます。

 

 次に 第2列(名前)を基準に昇順で並び替え すると、配列全体が 名前の五十音順 になるように行単位で入れ替わります。このとき、並び替えの基準は「名前」ですが、ID や点数も同じ行の情報として一緒に移動している点が確認できます。


 続いて 第3列(点数)を基準に降順で並び替え すると、点数の高い行から順に配列が並び替えられます。同じ点数(例:90点)が複数ある場合でも、各行のデータが崩れることなく、行単位で正しく並び替えられていることが分かります。


 このように SortArray2D を使うことで、「どの列を基準にするか」だけを切り替えるだけで、二次元配列を柔軟に並び替えられることが確認できます。


<関連コード>

 今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。


<関連記事>

 今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。

 コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


<コード>


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page