EXCEL VBA セルの文字列結合・選択文字列の結合(高速化・テクニック)

EXCEL VBA セルの文字列結合・選択文字列の結合(高速化・テクニック)

 

●はじめに
複数の列にあるのデータを結合して、一つのセルに文字列を結合する方法を説明します。今回、説明するプログラムは、簡単なプログラムで結合する場合と配列を使った高速で結合する説明をいたします。データの件数が、10件・100件程度なら簡単な結合方法で結合しても処理は遅く感じませんが、10,000件を超えるデータを複数セルを結合する際は、配列を使ったプログラムで結合した方が高速で処理する事が出来ます。それでは、セルの文字列結合の説明をいたします。

 

●プログラム説明 (サンプルプログラム①:簡単バージョン)
下記のプログラムは、複数の列データを結合して、一つのセルに結合するプログラムです。下記のプログラムは、簡単な方法での結合方法です。

 

Sub Mojiretuketugou01()

    For I = 1 To 10000   
        Cells(I, "G") = Cells(I, "A") & Cells(I, "B") & Cells(I, "C")
    Next I

End Sub

 

●実行結果 (G列にA列・B列・C列の結合された文字列が表示されました。 ※ クリックして拡大表示)

 

EXCEL VBA セルの文字列結合・選択文字列の結合(配列を利用した高速化結合)

●プログラム説明 (サンプルプログラム②:高速化バージョン)
下記のプログラムは、上記プログラムと処理内容は一緒ですが、配列を利用した高速バージョンになります。処理する件数が多くなるほど、サンプルプログラム①とサンプルプログラム②の処理スピードの差が付きます。

 

Sub Mojiretuketugou02()

    Dim array01, array02 As Variant  '配列の宣言をします。
    Dim I As Long
    
    array01 = WorksheetFunction.Transpose(Range("A1:C10000"))  '配列01にA1:C10000のデータを登録します。
        
    ReDim array02(10000) '配列の再定義

    For I = LBound(array02) To UBound(array02) - 1    '再定義した配列分ループします。

         array02(I) = array01(1, I + 1) & array01(2, I + 1) & array01(3, I + 1)  '配列01:A列&B列&C列を配列02に入れます。
    
    Next I
        
    Range("G1:G10000") = WorksheetFunction.Transpose(array02)  '配列02のデータをG列に表示させます。


End Sub

 

●実行結果 (G列にA列・B列・C列の結合された文字列が表示されました。 ※ クリックして拡大表示)

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA