VBAで高速処理に欠かせない配列処理
ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。
大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、
その処理方法が間違いです。
一次元配列もしくは二次元配列にデータを格納してから処理をすることで、
速度の改善が見込めます。
今回は配列の中身=値を取得する方法です。ForEach文で取得可能です。
配列の値を取得する(1次元)For
Public Sub sample1D()
Dim arr(2) As Variant
'■配列にデータを格納
arr(0) = 1
arr(1) = 2
arr(2) = 3
'■For文で取得する
Dim r As Long, c As Long
For r = LBound(arr, 1) To UBound(arr, 1)
Debug.Print arr(r)
Next
'■結果
'1
'2
'3
End Sub
配列の値を取得する(2次元)For
Public Sub sample2D()
Dim arr(2, 1) As Variant
'■配列にデータを格納
arr(0, 0) = 1
arr(0, 1) = "あ"
arr(1, 0) = 2
arr(1, 1) = "い"
arr(2, 0) = 3
arr(2, 1) = "う"
'■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)
Debug.Print arr(r, c)
Next
Next
'■結果
'1
'あ
'2
'い
'3
'う
End Sub
注意点
本記事はFor文です。
ForEach文でも同様に取得が可能です。取得結果に注意しながら使用可否決めて頂ければと思います。



コメント