Excel VBA で 表全体を一気に配列に読み込むには、Range("A1").CurrentRegion.Value を使うのが定番です。
これにより「A1 を含む連続したセル範囲(表全体)」を 二次元配列 として取得できます。
基本コード
Sub LoadCurrentRegionToArray()
Dim arr As Variant
' A1 を含む表全体を配列に読み込む
arr = Range("A1").CurrentRegion.Value
' 例: 配列のサイズ確認
Debug.Print "行数 = " & UBound(arr, 1)
Debug.Print "列数 = " & UBound(arr, 2)
' 例: 2行目3列目の値を表示
Debug.Print arr(2, 3)
End Sub
VB- ポイント:
CurrentRegionは A1 を含む「連続したセル範囲」を自動で検出。.Valueを付けると 二次元配列 (行, 列) として取得できる。UBound(arr, 1)→ 行数、UBound(arr, 2)→ 列数。
実務例①:表全体の数値を10%増加
Sub IncreaseValues()
Dim arr As Variant
Dim i As Long, j As Long
arr = Range("A1").CurrentRegion.Value
For i = 2 To UBound(arr, 1) '1行目は見出しと仮定
For j = 1 To UBound(arr, 2)
If IsNumeric(arr(i, j)) Then
arr(i, j) = arr(i, j) * 1.1
End If
Next j
Next i
' 一括で書き戻す
Range("A1").CurrentRegion.Value = arr
End Sub
VB実務例②:平均点を計算して最後の列に追加
Sub AddAverageColumn()
Dim arr As Variant
Dim i As Long, j As Long
Dim avg As Double
arr = Range("A1").CurrentRegion.Value
' 配列の列数を拡張するため、新しい配列を作成
Dim newArr() As Variant
ReDim newArr(1 To UBound(arr, 1), 1 To UBound(arr, 2) + 1)
' 元データをコピー
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(arr, 2)
newArr(i, j) = arr(i, j)
Next j
Next i
' 平均列を追加
newArr(1, UBound(newArr, 2)) = "平均"
For i = 2 To UBound(newArr, 1)
avg = 0
For j = 2 To UBound(arr, 2) '1列目は名前などと仮定
avg = avg + arr(i, j)
Next j
newArr(i, UBound(newArr, 2)) = avg / (UBound(arr, 2) - 1)
Next i
' 書き戻し
Range("A1").Resize(UBound(newArr, 1), UBound(newArr, 2)).Value = newArr
End Sub
VB✅ まとめ
Range("A1").CurrentRegion.Value→ 表全体を一発で配列化- 配列で処理 → 一括で書き戻し → 爆速
- 実務では「売上表」「成績表」「在庫表」など、見出し付きの連続データ範囲に最適。
