2次元配列とは、行と列を持つテーブルのような構造をプログラム内で表現するために使用されます。Excelのワークシートを考えるとイメージがしやすいです。各セルは特定の行と列に配置し、2次元配列も同様の方法でデータを整理します。
目次
ExcelVBAの2次元配列処理手順
2次元配列の宣言
VBAでは、2次元配列は以下のように宣言します。
Dim arr(1 To 5, 1 To 3) As Integer
arr:変数になります。
(1 To 5, 1 To 3):5行3列の整数型の配列を作成する事を意味します。
配列へのアクセスと代入
配列の特定の要素にアクセスするには、行と列のインデックスを指定します。
arr(1, 1) = 10
arr(2, 1) = 20
' …
配列の操作方法
2次元配列に対してループを使用することで、各要素にアクセスして操作を行うことができます。
For i = 1 To 5
For j = 1 To 3
Debug.Print arr(i, j)
Next j
Next i
Excelのワークシート範囲を一括で配列として格納する方法
2次元配列は、Excelのワークシートデータを処理する際に非常に便利です。たとえば、以下のコードはワークシートの範囲からデータを読み取り、配列に格納しています。
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim data As Variant
data = ws.Range("A1:C5").Value
便利な関数とプロシージャ
2次元配列を扱う際には、配列のサイズを取得するUBound関数・Lbound関数、配列をクリアにするEraseステートメントが便利です。
【VBA】ExcelVBAのLBound 関数・UBound 関数を使用する配列の基本
【VBA】Excel VBAの配列内容を削除するEraseステートメント
一括で2次元配列に格納してループして表示させる実用例
Excelシートからデータを読み取って2次元配列に折りたたむために、Rangeオブジェクトを使用します。以下のコードは、シートの特定の範囲からデータを読んで2次元配列に折りたたむ方法を示します。
Sub ReadRangeToArray()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' "Sheet1"は読み取るシートの名前です。
Dim rng As Range
Set rng = ws.Range("A1:B5") ' A1からB5までの範囲を指定します。
Dim arr As Variant
arr = rng.Value ' シートの範囲の値を配列に格納します。
' 配列の内容を確認するためにコンソールに出力します。
Dim i As Long, j As Long
For i = LBound(arr, 1) To UBound(arr, 1) ' 行に対するループ
For j = LBound(arr, 2) To UBound(arr, 2) ' 列に対するループ
Debug.Print arr(i, j)
Next j
Next i
End Sub