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文でループしなくても簡単に代入可能です。
コメント