「VBAでデータを一括処理したいけど、ループが長くて大変……」
「配列って便利と聞くけど、いまいち使い方がわからない」
そんなふうに感じたことはありませんか?
配列は、VBAで複数のデータをまとめて扱うための強力なツールです。うまく使いこなせば、処理速度の向上やコードの簡略化が実現でき、作業の効率がぐっとアップします。
この記事では、VBAの配列について、
初心者〜中級者の方が「実務で使える」ことを目標に、次のような内容をやさしく解説していきます。
-
配列の種類(1次元・2次元・多次元・動的)
-
配列の使い方(データの格納・ループ処理)
-
配列の応用(Functionの戻り値や検索処理)
-
よくあるエラーやつまずきポイント
配列を初めて使う方にも、少しだけ使ったことがあるという方にも役立つ内容になっていますので、ぜひ参考にしてみてください。
VBA配列の基本|1次元・2次元・多次元・動的の違い
1次元配列|最も基本的な配列の形
1次元配列は、リスト形式でデータを順番に格納する構造です。
複数の値を1つの変数にまとめて扱いたい場合に便利です。
Dim fruits(1 To 3) As String
fruits(1) = "りんご"
fruits(2) = "バナナ"
fruits(3) = "ぶどう"
このようにすれば fruits(1)
~ fruits(3)
にアクセスでき、For文などを使って一括処理も可能です。
※データを入れる箱がNo.1~No.3まで、計3つあります。
データの広がりは直線的で、比較的管理がしやすいです。
複数のデータを一つの配列に格納することで、 繰り返し処理や複雑な関数のやり取りを記載しやすくなります。
2次元配列|行と列のデータをまとめて管理
2次元配列は「表」のように、行と列の両方でデータを管理できます。
表形式のデータを扱う場面(例:売上表や出勤表など)でよく使われます。
処理するときは、2重のFor文でループするのが一般的です。
※データを入れる箱が3×2=6個存在します。
平面的な配置でデータの箱を管理します。
表形式のデータを格納するのに便利です。
多次元配列|3次元以上も可能だが、扱いは慎重に
3次元以上の多次元配列もVBAで扱うことができます。
たとえば「月別×店舗別×商品別」のような構成で管理したいときに使います。
Dim stock(1 To 3, 1 To 2, 1 To 4) As Integer
ただし、処理が複雑になりやすく、可読性が下がるため、利用は必要最小限にとどめるのがおすすめです。
3次元配列は「2次元の表(行×列)」が奥行方向に層として積み重なったイメージです。
上の例では、月ごとの商品・店舗別データを sales(商品番号, 店舗番号, 月番号) の構造でまとめています。
動的配列|データ量に応じて配列のサイズを変える
動的配列は、後からサイズを自由に変更できる柔軟な配列です。
データ件数が毎回異なるときや、途中で拡張が必要なときに活躍します。
Dim arr() As String
ReDim arr(1 To 5)
さらに Preserve
キーワードを使えば、既存の内容を保持したまま配列を拡張できます。