Excel VBA | Range→配列→加工→高速書戻し の実務テンプレ

VBA
スポンサーリンク

「Range→配列→加工→高速書戻し」というのは、Excel VBAやスプレッドシート処理でよく使う 実務効率化パターン
基本の流れはこうです:


実務テンプレート(Excel VBA)

Sub RangeToArrayProcessWriteBack()

    Dim ws As Worksheet
    Dim rng As Range
    Dim arr As Variant
    Dim i As Long, j As Long
    
    ' 対象シートと範囲を指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set rng = ws.Range("A1:C1000")   ' 読み込み範囲
    
    ' ① Range → 配列に読み込み(高速)
    arr = rng.Value
    
    ' ② 配列を加工(例:数値を2倍)
    For i = LBound(arr, 1) To UBound(arr, 1)
        For j = LBound(arr, 2) To UBound(arr, 2)
            If IsNumeric(arr(i, j)) Then
                arr(i, j) = arr(i, j) * 2
            End If
        Next j
    Next i
    
    ' ③ 配列 → Rangeへ一括書戻し(高速)
    rng.Value = arr
    
End Sub
VB

ポイント

  • Range→配列
    arr = rng.Value で一括読み込み。セルを1つずつ読むより圧倒的に速い。
  • 加工
    配列上でループ処理。セル操作を避けることで高速化。
  • 書戻し
    rng.Value = arr で一括書き込み。これもセルごとに書くより速い。

応用例

  • 文字列加工(Trim、置換など)
  • 条件付き加工(特定値のみ変換)
  • 集計やフィルタリング
  • 複数シート間のデータ転送

このテンプレをベースにすれば、「大量データを高速処理」する VBA 実務コードがすぐ書けます。

👉 ちなみに、この処理をさらに高速化するなら Variant配列ではなく一次元配列に落とすDictionaryやCollectionを併用する、などのテクニックもあります。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました