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文でも同様に取得が可能です。取得結果に注意しながら使用可否決めて頂ければと思います。
コメント