二次元配列の特定列をキーとして、配列をユニーク値ごとに分割する汎用プロシージャ Excel VBA
- yuji fukami
- 3 日前
- 読了時間: 2分

<概要>
本記事では、二次元配列の特定列をキーとして、配列をユニーク値ごとに分割する汎用プロシージャDivideArray2DCol_Unique を紹介します。
Excel VBA では、ワークシート上ではフィルターやピボットで簡単に行える処理でも、配列上で同等の処理を行おうとすると記述が煩雑になりがちです。
本プロシージャを使用すると、
二次元配列の任意の列を指定するだけで
その列のユニーク値ごとに行を抽出し
「一次元配列の各要素に、対応する二次元配列を格納」
という構造で結果を取得できます。
内部では、
指定列の抽出
ユニーク値の取得
条件指定による二次元配列のフィルタ処理
といった汎用プロシージャを組み合わせて処理しており、配列をデータベース的に扱うための基盤処理として利用できます。
カテゴリ別集計、グループ単位の処理、後続ロジックへの受け渡しなど、実務での再利用性が高い汎用プロシージャです。
<実行例>
実行例のサンプルコードは次の通りです
上記コードで配列の中身の確認には以前に紹介したDPAを利用しています。
実行結果のイミディエイトウィンドウは次のようになります。

このように、二列目の「果物」「野菜」「飲料」それぞれ別々でフィルター処理して抽出された二次元配列が1つ1つ一次元配列に格納されてるっていうのが確認できます。
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・ExtractColArray2D→ https://www.softex-celware.com/post/extractcolarray2d
・UniqueArray1D→ https://www.softex-celware.com/post/uniquearray1d
・FilterArray2D→ https://www.softex-celware.com/post/filterarray2d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



コメント