Excel VBAで数万行の大量データを処理を行う場合、セルのデータを一つずつ操作するよりも、一度に全てのデータを2次元配列に一括で読み込んでから処理を行った方が処理速度も向上し、データの取り扱いも便利になることが多いです。
VBAサンプル
以下に、2次元配列を使用してワークシートのデータを読み込み、処理し、書き出すマクロのコードを示します。
Sub セルのデータを二次元配列で処理() Dim 最終行 As Long Dim 最終列 As Long Dim 配列データ As Variant Dim 行 As Long Dim 列 As Long 'セルの内容を配列に入れる' 最終行 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 最終列 = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 配列データ = Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(最終行, 最終列)).Value '配列をループで処理' For 行 = 2 To UBound(配列データ, 1) For 列 = 1 To UBound(配列データ, 2) 'ここで配列の各要素を処理' '例:配列データ(行, 列) = 配列データ(行, 列) * 2' Next 列 Next 行 '配列の内容をセルに戻す' ActiveSheet.Cells(1, 1).Resize(UBound(配列データ, 1), UBound(配列データ, 2)).Value = 配列データ Erase 配列データ End Sub
補足説明
- ActiveSheetの最終行、最終列を取得して配列に格納しています。
- 配列をシートに戻す場所は、取得範囲と同じですが、「他の場所への移動時のサンプル」となるようにResizeプロパティを利用しています。
以上、Excel VBAで、処理を高速化するため2次元配列の活用サンプルでした。