Excel VBA | 多次元配列

VBA
スポンサーリンク

では、Excel VBAでの 3次元配列動的配列(ReDim) の使い方を、初心者向けに分かりやすく図解イメージ付きで解説します。


1. 3次元配列とは?

  • イメージ: 棚 × 行 × 列
  • 「3次元配列」は、複数の表が積み重なった感じ
  • 例:3人の生徒がいて、それぞれ3教科の点数を、2学期分持っている場合

図でイメージ

学期1 (0)
  名前      数学  国語  英語
  佐藤一郎   80   90   70
  山田花子   75   85   95
  鈴木太郎   60   70   80

学期2 (1)
  名前      数学  国語  英語
  佐藤一郎   85   95   80
  山田花子   78   88   92
  鈴木太郎   65   75   85
  • 学期が 0〜1 → 2学期分
  • 行が 0〜2 → 生徒3人
  • 列が 0〜3 → 名前 + 3教科

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

Dim scores(1, 2, 3) As Integer
VB
  • 1番目の数字 → 学期(0〜1)
  • 2番目の数字 → 生徒(0〜2)
  • 3番目の数字 → 項目(0=名前, 1=数学, 2=国語, 3=英語)

名前を文字列で入れる場合は String 型を使います


3. 配列に値を入れる例

' 学期1のデータ
scores(0, 0, 0) = "佐藤一郎"
scores(0, 0, 1) = 80 '数学
scores(0, 0, 2) = 90 '国語
scores(0, 0, 3) = 70 '英語

scores(0, 1, 0) = "山田花子"
scores(0, 1, 1) = 75
scores(0, 1, 2) = 85
scores(0, 1, 3) = 95
VB
  • (学期, 生徒, 項目) の順でアクセス
  • 名前だけ文字列、点数は整数というように混ぜて使える

4. 動的配列(ReDim)の使い方

  • 「最初に配列の大きさが分からない場合」や「後から行数を増やしたい場合」に便利

宣言例

Dim scores() As Integer  ' 最初はサイズ未定
VB

サイズを後から決める

ReDim scores(1, 2, 3)  ' 3次元配列のサイズを決定
VB
  • ReDim を使うとサイズを変更できます
  • すでに入れたデータを消さずにサイズ変更したい場合は Preserve を使う
ReDim Preserve scores(1, 3, 3)  ' 2次元目のサイズだけ増やす
VB

注意: 3次元以上で Preserve を使うと 最後の次元しか変更できません


5. ループで3次元配列を処理する例

Dim i As Integer, j As Integer, k As Integer

For i = 0 To 1      ' 学期
    For j = 0 To 2  ' 生徒
        For k = 1 To 3 ' 教科(数学〜英語)
            MsgBox "学期" & (i + 1) & " " & scores(i, j, 0) & "の点数は " & scores(i, j, k)
        Next k
    Next j
Next i
VB
  • 外側 → 学期
  • 中 → 生徒
  • 内 → 教科

これで「3次元配列」の中身をすべて取り出せます


6. 練習問題

問題:

  1. 2学期 × 2人の生徒 × 2教科(数学・国語)の3次元配列を作る
  2. それぞれ適当な点数を入れる
  3. 各生徒の各学期の合計点を表示する

ヒント: ループでまとめて計算すると便利


ポイントまとめ

  1. 3次元配列は「表が複数積み重なったイメージ」
  2. 配列の順番は (学期, 生徒, 項目) のように 次元の意味を意識
  3. 動的配列は Dim () As 型 + ReDim で作れる
  4. ReDim Preserve でサイズを増やせるが、最後の次元しか変更できない
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました