二次元配列をフィルター処理する(Excel VBA)
- yuji fukami
- 1月9日
- 読了時間: 2分
<概要>
今回は二次元配列をフィルター処理する汎用プロシージャの紹介です。
VBAではWorksheetFunction.Filter関数が利用できますが、この標準関数は非常に使い勝手が悪いので私は自作の汎用プロシージャを使用しています。
紹介する汎用プロシージャ「FilterArray2D」では与える引数は4つで、1つ目に処理対象の二次元配列「Array2D」で2つ目にフィルターする条件の値「Filter_」で3つ目にフィルターする対象の列番号「Col」と最後の4つ目にフィルターの条件「Condition」を与えるだけとなっています。
また、4つ目の引数のフィルターの条件「Condition」においては、Enum(列挙体)を利用しているので、下の画像のように一覧から条件を選択することができるようになってます。

<実行例>
実行例のサンプルコードは次の通りです
上記コードで配列の中身の確認には以前に紹介したDeleteRowArray2D、DPAを利用しています。
DeleteRowArray2D → https://www.softex-celware.com/post/deleterowarray2d
シート上にはダミーのデータが次のように入っています。

ダミーデータ次のCSVファイルを使っています。 データは個人情報テストデータジェネレーターで作成しました。https://testdata.userlocal.jp/
実行結果「イミディエイトウィンドウ」は次のようになります。
すべて目的の処理どうりに二次元配列がフィルターされているのがわかります。

<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・IsArray2D → https://www.softex-celware.com/post/isarray1d
・IsArray2DStart1 → https://www.softex-celware.com/post/isarray1d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



コメント