Excel VBAで配列を使用する方法について説明します。配列は複数の値を一つの変数に格納するためのデータ構造です。
分かりやすく日常にある電車に例えると
配列は、同じ種類のデータを連続して保存するためのものです。これを電車に例えると、配列は電車全体に相当します。電車が複数の車両を連結しているように、配列も複数のデータを順番に並べて保持します。
インデックス = 車両番号
配列の要素には「インデックス」という番号が付いています。これは車両番号のようなものです。電車の1号車、2号車といったように、配列の要素にも1番目、2番目、3番目と番号が振られています
配列の宣言を電車に例える
配列を宣言を電車にすると、電車は5両編成で、車両(配列の要素)には乗客(データ)が乗ります。
宣言をするときは変数名の後にカッコの中に最初の数と何個までの数を指定します。
Dim 変数名(下限値 To 上限値) As データ型
Dim myTrain(1 To 5) As Integer
この宣言では1両目から5両目までを指定しています。
配列への値の代入を電車に例える
各車両に乗客(データ)を乗せることは、配列に値を代入することに相当します。
myTrain(1) = 10
myTrain(2) = 20
myTrain(3) = 30
myTrain(4) = 40
myTrain(5) = 50
これは、1両目の車両に10人、2両目に20人、3両目に30人、4両目に40人、5両目に50人の乗客を乗せるようなものです。
例えば3両目に何人乗っているかを確認します。
Sub Example()
Dim myTrain(1 To 5) As Integer
myTrain(1) = 10
myTrain(2) = 20
myTrain(3) = 30
myTrain(4) = 40
myTrain(5) = 50
MsgBox myTrain(3)
End Sub
このコードを実行するとメッセージボックスに30が表示されます。
配列の要素を使った操作
配列の要素を使って計算や他の操作を行うこともできます。例えば、myTrain(1)の値を他の変数に代入して計算します。
Sub Example()
Dim myTrain(1 To 5) As Integer
Dim result As Integer
myTrain(1) = 10
myTrain(2) = 20
myTrain(3) = 30
myTrain(4) = 40
myTrain(5) = 50
' myTrain(1)の値を使って計算
result = myTrain(1) * 2 ' myTrain(1)の値を2倍にする
MsgBox result
End Sub
「result = myTrain(1) * 2」というように演算の他、「result = myTrain(1) + myTrain(2)」このように配列同士でも計算ができます。
VBAの配列は何に利用できるか?
Excel VBAの配列は、データを効率的に管理および操作するために使用されます。具体的には、次のような内容で配列を利用できます。
大量のデータの格納
配列は、複数の関連するデータを一つの変数にまとめて格納するのに適しています。例えば、あるクラスの全生徒の点数を管理する場合
Sub StoreStudentScores()
Dim scores(1 To 30) As Integer
scores(1) = 85
scores(2) = 90
' 以下略
End Sub
データの一括処理
配列を使用すると、ループを使って大量のデータを一括で処理することができます。例えば、全ての点数に10点を加算する場合
Sub IncreaseScores()
Dim scores(1 To 5) As Integer
Dim i As Integer
' 配列に値を代入
For i = 1 To 5
scores(i) = i * 10
Next i
' 点数に10点を加算
For i = 1 To 5
scores(i) = scores(i) + 10
Next i
End Sub
ここにある「For」は繰り返しを意味します。Forについては別のページで説明します。
このほかにもExcelシートのセルの列の計算などにも使えます。
2次元配列
2次元配列は、行と列の2つの次元を持つ配列で、マトリックスや表形式のデータを格納するのに適しています。イメージはExcelのシートをイメージしてもらえると分かりやすいと思います。
2次元配列の宣言
2次元配列を宣言するには、Dimステートメントを使用して、行と列の数を指定します。
Dim myArray(1 To 3, 1 To 2) As Integer
上記の例では、3行2列の整数型の2次元配列を宣言しています。
2次元配列への値の代入
2次元配列に値を代入するには、行と列のインデックスを指定します。
myArray(1, 1) = 10
myArray(1, 2) = 20
myArray(2, 1) = 30
myArray(2, 2) = 40
myArray(3, 1) = 50
myArray(3, 2) = 60
2次元配列の要素を取り出す。
2次元配列の要素にアクセスするには、行と列のインデックスを指定します。例えば、myArray(2, 1)の値をメッセージボックスに表示するには、次のようにします
MsgBox "配列の値、 myArray(2, 1) : " & myArray(2, 1)
2次元配列の使用例
以下は、2次元配列を使用して行列の足し算を行い、その結果を表示する例です。
Sub MatrixAddition()
Dim matrix1(1 To 2, 1 To 2) As Integer
Dim matrix2(1 To 2, 1 To 2) As Integer
Dim result(1 To 2, 1 To 2) As Integer
Dim i As Integer, j As Integer
' 行列1の値を代入
matrix1(1, 1) = 1
matrix1(1, 2) = 2
matrix1(2, 1) = 3
matrix1(2, 2) = 4
' 行列2の値を代入
matrix2(1, 1) = 5
matrix2(1, 2) = 6
matrix2(2, 1) = 7
matrix2(2, 2) = 8
' 行列の足し算
For i = 1 To 2
For j = 1 To 2
result(i, j) = matrix1(i, j) + matrix2(i, j)
Next j
Next i
' 結果を表示
For i = 1 To 2
For j = 1 To 2
MsgBox "result(" & i & "," & j & ") = " & result(i, j)
Next j
Next i
End Sub
この例では、matrix1とmatrix2という2つの2次元配列を定義し、それらの要素を足し合わせてresult配列に格納しています。最後に、結果をメッセージボックスで表示します。
このようにExcel VBAには多次元配列(次元配列)があります。これにより、2次元以上の配列を使用して、複雑なデータ構造を扱うことができます。多次元配列は、行列や三次元のデータを格納するのに適しています。