VBAで高速処理に欠かせない配列処理
ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。
大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、
その処理方法が間違いです。
一次元配列もしくは二次元配列にデータを格納してから処理をすることで、
速度の改善が見込めます。
配列の要素に値を代入(1次元の場合)
Public Sub sample1D()
Dim arr(2) As Variant
'■For文で要素を作成する
Dim r As Long, c As Long
For r = LBound(arr, 1) To UBound(arr, 1)
arr(r) = r
Next
'■結果
'arr(0)=0
'arr(1)=1
'arr(2)=2
End Sub
配列の要素に値を代入(2次元の場合)
Public Sub sample2D()
Dim arr(2, 1) As Variant
'■For文で要素を作成する
Dim r As Long, c As Long
For r = LBound(arr, 1) To UBound(arr, 1)
For c = LBound(arr, 2) To UBound(arr, 2)
arr(r, c) = r
Next
Next
'■結果
'arr(0,0)=0
'arr(0,1)=0
'arr(1,0)=1
'arr(1,1)=1
'arr(2,0)=2
'arr(2,1)=2
End Sub
注意点
今回はFor文で要素を作成しましたが、セルの範囲を一括で代入すると配列操作も楽になります。
その場合、わざわざFor文でループしなくても簡単に代入可能です。



コメント