Excel VBA | Range(“A1”).CurrentRegion をそのまま配列にする高速テク

VBA
スポンサーリンク

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 → 表全体を一発で配列化
  • 配列で処理 → 一括で書き戻し → 爆速
  • 実務では「売上表」「成績表」「在庫表」など、見出し付きの連続データ範囲に最適。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました