VBAで自動化 セル・値の取得と貼り付け 配列

【VBA】2次元配列を使用して一括で格納・格納データをループで処理する方法

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

-VBAで自動化, セル・値の取得と貼り付け, 配列