多次元配列の使用方法と注意点

VBAでは、2次元配列だけでなく、3次元以上の多次元配列も使うことができます。
データをさらに深く整理したいときや、複雑な構造を扱うときに有効ですが、注意点もあるため、正しく使うことが重要です。


1. 多次元配列とは?

● 2次元配列:行 × 列 の表

すでにご紹介したように、2次元配列は以下のような**表形式(横と縦)**のデータです。

arr(行, 列)
例:arr(1,2) = "データ"

● 3次元配列:表の「層」があるイメージ

3次元になると、**「行 × 列 × 層」**の構造になります。
1枚の表が複数重なったイメージです。

arr(層, 行, 列)
例:arr(1,2,3) = "データ"

たとえば「月ごとの売上表」を扱いたい場合、

  • 第1次元 → 月(1月〜12月)
  • 第2次元 → 商品(行)
  • 第3次元 → 項目(列:商品名・単価・個数 など)

というように構造化できます。


2. 多次元配列の宣言方法

● 基本構文

Dim 配列名(下限1 To 上限1, 下限2 To 上限2, ..., 下限n To 上限n) As データ型

● 例:3次元配列(3層 × 2行 × 2列)

Dim arr(1 To 3, 1 To 2, 1 To 2) As String

3. 値の代入と参照

arr(1, 1, 1) = "A"
arr(1, 1, 2) = "B"
arr(2, 1, 1) = "C"

MsgBox arr(2, 1, 1) '→ "C"

インデックスの順番に注意が必要です。
どの次元がどの意味を持つかを意識して使うことが重要です。


4. ループ処理の例

3次元配列以上になると、ネスト(入れ子)のループが必要になります。

Dim i As Long, j As Long, k As Long

For i = LBound(arr, 1) To UBound(arr, 1) '層
For j = LBound(arr, 2) To UBound(arr, 2) '行
For k = LBound(arr, 3) To UBound(arr, 3) '列
Debug.Print arr(i, j, k)
Next k
Next j
Next i

5. 多次元配列の注意点

注意点内容
構造が複雑になるどの次元が何を表すかを明確に決めておかないと混乱します。コメントや変数名で管理しましょう。
可読性が下がりやすい次元が多くなるとコードが読みにくくなります。処理を関数に分けるなどの工夫が必要です。
容量・パフォーマンス大きな多次元配列はメモリを消費しやすく、処理速度も落ちることがあります。サイズには注意を。
配列サイズの確認が面倒LBound/UBound に第n引数を指定しないと、次元ごとの境界が取得できません。

6. 実務での利用は慎重に

3次元配列以上は、扱える人には便利ですが、無理に使うとトラブルの元になります。
場合によっては、次のような別の方法も検討しましょう:

  • 配列の中に配列を入れる(配列の配列)
  • DictionaryやCollectionを使って階層構造をつくる
  • ユーザー定義型(Type)で構造を整理する

7. まとめ

  • 多次元配列は「層」を持った表のような構造
  • Dim arr(層, 行, 列) のように使う
  • ループはネスト(入れ子)構造で処理
  • 可読性やパフォーマンスに注意
  • 複雑な場合は別の手法も検討

多次元配列は強力な道具ですが、**「何を」「どう整理するか」**をきちんと設計してから使うことが大切です。

コメント

タイトルとURLをコピーしました