この記事では、Excel VBAで使用する2次元配列について、基本的な使い方から応用テクニックまで詳細に解説します。2次元配列は、データを表形式で扱う際に非常に便利です。この記事を読むことで、2次元配列の使い方がマスターできるでしょう。
二次元配列の基本
二次元配列の宣言
Excel VBAで二次元配列を宣言する基本的な形式は以下です。
Dim 配列名(一次元の要素数, 二次元の要素数) As 型名
例1:整数型の二次元配列を宣言
Sub DeclareArray()
Dim myArray(3, 4) As Integer
End Sub
このサンプルコードでは、myArray
という名前の二次元配列を宣言しています。この配列は、4行3列の整数を格納できます。
動的配列としての二次元配列
動的配列を二次元配列に変換する場合、ReDim
キーワードを使用します。
ReDim 配列名(一次元の要素数, 二次元の要素数)
例2:動的配列を二次元配列に変換
Sub DeclareDynamicArray()
Dim dynamicArray() As Integer
ReDim dynamicArray(2, 3)
End Sub
このサンプルコードでは、dynamicArray
という動的配列を2行3列の二次元配列に変換しています。
配列の要素への代入
配列の要素に値を代入するには、以下のようにします。
配列名(インデックス1, インデックス2) = 値
例3:配列の要素に値を代入
Sub AssignValuesToArray()
Dim myArray(2, 2) As Integer
myArray(0, 0) = 1
myArray(0, 1) = 2
myArray(0, 2) = 3
myArray(1, 0) = 4
myArray(1, 1) = 5
myArray(1, 2) = 6
End Sub
このサンプルコードでは、myArray
配列の各要素に1から6までの整数を代入しています。
二次元配列の応用
配列に配列を代入する
動的配列には同じ型の配列だけ代入できます。
例5:二次元配列の要素を別の二次元配列にコピー
Sub AssignArrayToArray()
Dim anotherArray(2, 3) As Integer
Dim dynamicArray(2, 3) As Integer
Dim i As Integer, j As Integer
' anotherArrayに何らかの値を設定(例として0から5までの値を設定)
For i = 0 To 2
For j = 0 To 3
anotherArray(i, j) = i * 2 + j
Next j
Next i
' anotherArrayの要素をdynamicArrayにコピー
For i = LBound(anotherArray, 1) To UBound(anotherArray, 1)
For j = LBound(anotherArray, 2) To UBound(anotherArray, 2)
dynamicArray(i, j) = anotherArray(i, j)
Next j
Next i
End Sub
このサンプルコードでは、anotherArray
という2行3列の二次元配列と、dynamicArray
という同じサイズの二次元配列を作成しています。その後、anotherArray
の各要素をdynamicArray
にコピーしています。
二次元配列の操作
要素の取得
配列の要素を取得するには、以下のようにします。
例6:配列の要素を取得
Sub GetArrayValue()
Dim myArray(2, 2) As Integer
Dim value As Integer
myArray(0, 0) = 1
value = myArray(0, 0)
End Sub
このサンプルコードでは、myArray
配列の(0, 0)の位置にある要素を取得して、value
変数に格納しています。
インデックスの範囲
インデックスが配列の範囲外の場合、エラーが発生します。
例7:範囲外のインデックスを指定
Sub OutOfRangeIndex()
Dim myArray(2, 2) As Integer
Dim outOfRangeValue As Integer
outOfRangeValue = myArray(10, 10) ' エラーが発生する
End Sub
このサンプルコードでは、存在しないインデックス(10, 10)を指定しているため、エラーが発生します。
2次元配列に関するFAQ
Q:2次元配列とは何ですか?
A:2次元配列は、データを格子状に格納するためのデータ構造です。通常の配列が1次元の線上にデータを格納するのに対し、2次元配列は行と列の2次元平面上にデータを格納します。Excelのシートのように、行と列でデータを管理する場合に便利です。
Q:2次元配列の宣言方法は?
A:VBAでの2次元配列の宣言は、Dim
キーワードを使用して行います。例えば、Dim myArray(3, 4) As Integer
というコードは、3行4列の整数型の2次元配列を宣言します。
Q:動的な2次元配列は作成できますか?
A:はい、ReDim
キーワードを使用することで、動的な2次元配列を作成できます。初めにDim dynamicArray() As Integer
と宣言し、後でReDim dynamicArray(2, 3)
とすることで、2行3列の動的な2次元配列が作成されます。
Q:2次元配列の要素にどうやって値を代入しますか?
A:2次元配列の要素に値を代入するには、配列名(行インデックス, 列インデックス) = 値
という形式を使用します。例えば、myArray(0, 0) = 1
とすると、myArray
配列の1行1列目に1が代入されます。
Q:2次元配列の要素をどうやって取得しますか?
A:2次元配列の要素を取得するには、変数名 = 配列名(行インデックス, 列インデックス)
という形式を使用します。例えば、value = myArray(0, 0)
とすると、value
変数にmyArray
配列の1行1列目の値が格納されます。
Q:2次元配列でよく発生するエラーは何ですか?
A:2次元配列でよく発生するエラーは、インデックスが配列の範囲外になることです。VBAでは、配列のインデックスは通常0から始まります。したがって、myArray(10, 10)
のように宣言されていないインデックスを指定すると、エラーが発生します。
Q:2次元配列をソートする方法は?
A:VBA標準の機能では2次元配列のソートは直接サポートされていません。しかし、独自のソートアルゴリズムを実装することで、2次元配列をソートすることは可能です。
関連動画
まとめ
この記事では、Excel VBAでの2次元配列の基本から応用までを詳しく解説しました。特に、配列の宣言、動的配列への変換、要素の取得や代入などについて詳しく説明しました。この知識を基に、より高度なプログラミングに挑戦してみてください。
Excelのショートカットキーの練習
当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。
※推奨ブラウザ Google Chrome