OutputCellArray2D|二次元配列をセルへ一括出力(配列一括出力) | Excel VBA
- yuji fukami
- 2024年12月28日
- 読了時間: 3分
更新日:1月4日

<概要 (VBA 配列 セル 出力)>
OutputCellArray2Dは、Excel VBAで扱う二次元配列を、指定したセルを起点として一括でワークシートへ出力(配列一括出力)するための汎用プロシージャです。Range.Valueへの直接代入を用いることで、高速かつシンプルに配列内容をセルへ反映できます(VBA 配列 セル 出力)。
二次元配列のセルへの一括出力は、配列の中身をセル上への出力を高速化するためになくてはならない技術です。
基本構文は次のようになっています。
ただ、このセル範囲において必要な情報となってくるのは、出力する基準の左上のセルだけで、出力するセル範囲は二次元配列の行数列数から自動的に決まってきます。
このことを考慮した場合に、二次元配列の一括出力において必要な情報は「出力するに次元配列」「左上の基準セル」の2つになります。
また部品として汎用プロシージャとして構築する場合は、出力するセル範囲に別々の情報を何度も出力するという風になった場合は、それぞれ出力する二次元配列の大きさよっては一つ前に出力した二次元配列の情報が一部残ったりする可能性があるので、事前に出力する範囲の初期化等の設定も必要になってきます。この初期化処理は紹介する汎用プロシージャーでの第三引数「Clear」で設定できるようになっています。
ちなみに出力対象とする二次元配列は、必ず要素数は1が開始となるように限定しております。この理由として、もし1以外で0開始の二次元配列も対応しようとした場合に汎用プロシージャの中の行動が複雑化することと、現実的に0開始の二次元配列を扱うことは滅多にないってことを考慮しております。
<実行例>
実行例のコードは次のようになっております。
出力する二次元配列は行数列数が3x4の配列を例にしております。
出力する基準セルはB3セルとしています。

実際に実行すると、次の画像のように二次元配列がセル上に出力されているのがわかります。

ちなみに、一般的なExcel VBAの教材では一つ一つのセルに一つの値を一つずつ入力するような教え方が多いですが、実務上ではそのようなやり方やると非常に処理が遅い実装になり、使用する側としてもストレスがたまりやすいものになってしまいます。私が教える場合はこのような処理は「ご飯の米粒を1つずつ食べるような行為」と揶揄しております。子育てを経験すると実感しやすい表現です。
実務上でExcel VBを実装する場合は、できるだけ出力する内容を配列に一つに貯めてから一括で出力するようにすると、より処理の早いストレスの溜まりにくいツールが出来上がります。
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・IsArray2D → https://www.softex-celware.com/post/isarray1d
・IsArray2DStart1 → https://www.softex-celware.com/post/isarray1d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


