【18】VBAの「多次元配列」について

記事で紹介しているエクセル
・エクセル2019 [64ビット版]

目次

「多次元配列」とは?

前回は「配列」について解説しましたが、今回は同じく配列で「多次元配列」について解説したいと思います。

いろいろ説明するよりも、まずはサンプルのソースコードと実行結果から見てみましょう。

Sub test17()
    
    '---【テストの点数】---
    '氏名|国語|数学|英語
    '----------------------
    '藤原|35点|10点|95点
    '佐藤|10点|98点|20点
    '----------------------
    
    Dim Seiseki(1, 2) As Integer
    Dim Simei(1) As String
    Dim Kyouka(2) As String
    Dim i As Integer
    Dim j As Integer
    
    Simei(0) = "藤原"
    Simei(1) = "佐藤"
    
    Kyouka(0) = "国語"
    Kyouka(1) = "数学"
    Kyouka(2) = "英語"
    
    '藤原のテスト点数
    Seiseki(0, 0) = 35 '国語
    Seiseki(0, 1) = 10 '数学
    Seiseki(0, 2) = 95 '英語
    
    '佐藤のテスト点数
    Seiseki(1, 0) = 10 '国語
    Seiseki(1, 1) = 98 '数学
    Seiseki(1, 2) = 20 '英語
    
    For i = 0 To 1
        For j = 0 To 2
            MsgBox Simei(i) & "の成績:" & Kyouka(j) & "は" & Seiseki(i, j) & "点"
        Next
    Next
    
End Sub
画像1:テストの成績表
画像2:実行結果

それではいつものように1つずる解説していきます。

このサンプルコードでは、2人の国語・数学・英語のテスト点数を表示しています。

    Simei(0) = "藤原"
    Simei(1) = "佐藤"
    
    Kyouka(0) = "国語"
    Kyouka(1) = "数学"
    Kyouka(2) = "英語"

まずは多次元ではない普通の配列を使って、氏名と教科を配列に代入しています。

    '藤原のテスト点数
    Seiseki(0, 0) = 35 '国語
    Seiseki(0, 1) = 10 '数学
    Seiseki(0, 2) = 95 '英語
    
    '佐藤のテスト点数
    Seiseki(1, 0) = 10 '国語
    Seiseki(1, 1) = 98 '数学
    Seiseki(1, 2) = 20 '英語

次に、藤原と佐藤の点数を代入しています。

この代入先が多次元配列になります。

ソースコードの宣言時「Dim Seiseki(1, 2) As Integer」と記述したのが、多次元配列の宣言です。

多次元配列の宣言は以下の通りです。

Dim <配列名>(<1次元目の配列数>, <2次元目の配列数>, <3次元目の配列数>, .....) As <データ型>

このサンプルコードでは「2次元目の配列数」まで定義されていますので、多次元配列の中でも「2次元配列」になります。

サンプルコードでは、1次元目は2人分のデータが入るよう定義され、2次元目は3教科のデータが入るよう定義されています。

「画像1:テストの成績表」を見れば分かりやすいかもしれません。

要するに、「氏名」と「教科」という2つの要素が組み合わさっています。

したがって、この2つの要素を配列に入れ込めば、2次元配列になるわけです。

    For i = 0 To 1
        For j = 0 To 2
            MsgBox Simei(i) & "の成績:" & Kyouka(j) & "は" & Seiseki(i, j) & "点"
        Next
    Next

今回のループ処理では、For文の中にFor文を入れ子にしています。

そうする事で、先程の実行結果のように出力する事が可能なわけです。

画像3

簡単なプログラムを作っている内は、特に多次元配列を利用する機会は無いかもしれませんが、重要なデータに対する考え方なのでキッチリ覚えておきましょう。

よかったらシェアしてね!
目次
閉じる