VBAで高速処理に欠かせない配列処理
ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。
大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、
その処理方法が間違いです。
一次元配列もしくは二次元配列にデータを格納してから処理をすることで、
速度の改善が見込めます。
ただ、配列処理となると厄介だから勉強していない!という初心者の方も多いでしょう。
単純に、ワークシート内のセル範囲と配列は同様と考えると簡単かもしれません。
Split関数を使用して配列に値を格納する
Split関数を理解していれば難しくありません。
※注意※Option Base1の影響を受けません。
Option Base 1 '■Split関数を使用し変数に値を格納する。 Sub sample_IE_Array_Split() Dim arr As Variant '■変数を格納 arr = Split("Windows,iOS,Android,Linux", ",") '■配列の値を表示 MsgBox arr(0) 'Windows※OptionBase1の影響を受けない MsgBox arr(1) 'iOS MsgBox arr(2) 'Android MsgBox arr(3) 'Linux End Sub
その他
- Split関数を使用した場合は、Option Baseの影響は受けません。必ずarr(0)のように0スタートします。
- 今回は Dim arr as VariantでVariant型で宣言していますが、
Dim arr() as Stringのように配列で宣言すれば同様に格納可能です。
※値を格納時もarr() = Split(“Windows,iOS,Android,Linux”, “,”)としてください。
関連記事
配列に値を格納するのはFor Loopと思っているのはもったいないです。
セル範囲をそのまま代入したり、動的に管理する事も出来るので、
VBA開発者は配列で処理するのが基本としてほしいです。圧倒的にスピードが速いです。
以下の関連記事も参考にしてください。
配列の初期化と宣言(静的/動的/1次元/2次元)【ExcelVBA】
配列にセル範囲を格納/動的配列をセルに貼付【ExcelVBA】
コメント