VBA高速化検証:文字列の連結 2011.09.21
文字列を繋げる場合は、文字列連結演算子の「&」を使用します。またそれ以外に、文字列を配列変数に格納し、Join関数で連結するといった方法も考えられます。
今回は、その2つのケースではどちらが高速かの検証を行いました。尚、Excel2003と2007で検証を行っています。
文字列の連結
下の表とグラフは、私のパソコン※でスピード検証テストを行った結果です。
※Vista / intel Core2 Duo / Excel2003,2007
結果
・Excel2003と2007では、「&」では2003が若干速く、「Join」はほぼ同様であった
・「&」では、連結する文字列が多くなるほど、処理時間が飛躍的に増える傾向であった
・Join関数は、連結する文字列が多くなっても、処理時間の増加は緩やかな傾向であった
・2つの文字列の連結は「&」が高速だが、3つ以上の文字列ではJoin関数が高速であった
結果から
連結させる文字列が2つの場合は「&」がよく、3つ以上場合は、配列変数を用いJoin関数を使用するとよいことが分かりました。高速化の点からは「&」の多用には注意が必要です。
尚、ループ内で変数に文字列を格納した場合の検証結果を下に掲載しました。配列変数への文字列の格納は、通常の変数の格納より時間がかかるため、Join関数の結果は、これまでのTestより低速です。しかし、順位の結果はこれまでのTestと同じです。
※今回のテストは私のパソコンのみの検証であり、どのような環境でも、同様の結果を保証するものではありません。
※Excelのバージョンで結果に違いが出る事が考えられます。
検証テストコードとファイル
●検証テストのコード [Code]
●Excel97-2010 [Test_File] 検証テストを行ったファイルです。
文字列の連結(ループ内で変数に文字列を格納)
※文字列の格納には時間がかかるため、ループ回数は30万回に設定しました。