ExcelVBA

文字列を分割して配列に値を格納する【Split関数】

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】

コメント

タイトルとURLをコピーしました