大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで文字列を結合する『&』と『Join』について説明します。文字列を結合する際に、文字列を変数に入れて繰り返し結合することができます。高速に文字列を結合したい場合は、『Join』がおすすめです。

はじめに

この記事では、文字列を結合する方法について2つご紹介します。

文字列を結合する方法は、『&』を使う方法と『Join』を使う方法があります。

簡単なのは『&』を使った方法で、高速なのは『Join』を使った方法です。

それぞれの方法について、具体例を挙げながら説明していきます。

この記事で紹介すること

  • 『&』を使って文字列を結合する方法
  • 『Join』を使って文字列を結合する方法

目次

VBAで『&』を使って文字列を結合

Excel VBAで文字列を結合するには、『&』を使えばできます。

文字列を結合する例を、『&』を使っていくつか挙げていきます。

知りたいところだけをみるといいかと思います。

文字列を結合

2つの文字列を結合する例です。

文字『A』と『B』を結合してみます。

Sub TEST1()
    
    a = "A" & "B"
        
    MsgBox a
        
End Sub

文字列を結合するには『a = "A" & "B"』というように入力するとできます。

では実行してみます。

文字『A』と『B』を結合した結果

2つの文字列を&で結合した結果

結果は、『AB』となりました。

文字列が結合できています。

文字列を変数にして結合

文字列を一旦変数に入力にして、入力した変数で結合することもできます。

文字『A』と『B』を変数に入力して結合してみます。

Sub TEST2()
    
    a = "A"
    b = "B"
    
    c = a & b
    
    MsgBox c
    
End Sub

まず、文字『A』と『B』を変数a, bに入力します。

変数にした文字列の結合は、『c = a & b』と入力すればできます。

では、VBAコードを実行して文字列を結合した結果をみてみます。

文字列を変数にして結合した結果

文字を変数に入力して&で文字列を結合した結果

結果は、『AB』となりました。

変数にしても文字列を結合することができます。

コンマ区切りで結合

コンマ区切りで文字列を結合する方法を説明します。

文字『A』と『B』をコンマ『,』区切りで結合してみます。

Sub TEST3()
    
    a = "A" & "," & "B"
    
    MsgBox a
    
End Sub

コンマ区切りで文字列を結合するには、『a = "A" & "," & "B"』とすればできます。

コンマを『"』で囲って『&』で結合という感じですね。

では、結果をみてみます。

コンマ区切りで結合した結果

コンマ区切りで&を使って文字列を結合した結果

結果は、『A,B』となりました。

コンマ区切りで文字列を結合できました。

半角スペース区切りで結合

半角スペース区切りで文字列を結合する方法を説明します。

コンマ区切りとやり方は同じでコンマを半角スペースに変えてやればできます。

文字『A』と『B』を半角スペース区切りで結合してみます。

Sub TEST4()
    
    a = "A" & " " & "B"
    
    MsgBox a
    
End Sub

半角スペース区切りで文字列を結合するには、『a = "A" & " " & "B"』とすればできます。

半角スペースを『"』で囲って『&』で結合という感じです。

では、結果をみてみます。

半角スペース区切りで結合した結果

半角スペース区切りで&を使って文字列を結合した結果

結果は、『A B』となりました。

半角スペース区切りで文字列を結合できました。

改行区切りで結合

改行区切りで文字列を結合する方法を説明します。

文字『A』と『B』を改行区切りで結合してみます。

Sub TEST5()
    
    a = "A" & vbLf & "B"
    
    MsgBox a
    
End Sub

改行区切りで文字列を結合するには、『a = "A" & vbLf & "B"』とすればできます。

改行の記号『vbLf』は『"』で囲わない点に注意です。

では、結果をみてみます。

改行区切りで結合した結果

改行区切りで&を使って文字列を結合した結果

結果は、文字AとBが改行されて結合されました。

改行区切りで文字列を結合できています。

文字列を繰り返し結合

文字列を繰り返し結合する方法についてご紹介します。

繰り返し結合するには、ループするコード『For~Next』を使います。

複数の文字列をコンマ区切りで結合するVBAコードです。

Sub TEST6()
    
    '配列を作成する
    ReDim a(0 To 5)
    a(0) = "A"
    a(1) = "B"
    a(2) = "C"
    a(3) = "D"
    a(4) = "E"
    a(5) = "F"
    
    b = ""
    For i = 0 To 5
        '最終文字の前まで
        If i < 5 Then
            b = b & a(i) & ","
        '最終文字
        Else
            b = b & a(i)
        End If
    Next
    
    MsgBox b
    
End Sub

手順としては、

  • ①コンマ区切りで結合したい文字列の配列を作成
  • ②For~Nextでループ開始
  • ③最終文字の前までは、文字列とコンマ『","』を結合する
  • ④最終文字の場合は、文字列のみ結合する

手順①:コンマ区切りで結合したい文字列の配列を作成

結合したい文字列の配列を作成します。

'配列を作成する
ReDim a(0 To 5)
a(0) = "A"
a(1) = "B"
a(2) = "C"
a(3) = "D"
a(4) = "E"
a(5) = "F"

配列で0~5個の文字列を用意しました。

手順②:For~Nextでループ開始

For~Nextで結合したい文字列分ループします。

For i = 0 To 5
    '文字列を結合
Next

今回は配列を0~5まで用意しましたので、0~5をループしています。

手順③:最終文字の前までは、文字列とコンマ『","』を結合する

最終文字の前『4』までは、コンマ『","』を結合します。

'最終文字の前まで
If i < 5 Then
    b = b & a(i) & ","
End if

手順④:最終文字の場合は、文字列のみ結合する

最終文字の場合は、コンマ『","』がいらないので、結合したい文字列だけ結合します。

'最終文字
Else
    b = b & a(i)
End if

これで複数の文字列を繰り返し結合することができます。

では、繰り返し文字列を結合した結果です。

実行結果

&を使ってコンマ区切りで、文字列を繰り返し結合した結果

結果は、『A,B,C,D,E,F』となりました。

コンマ区切りで複数の文字列を結合できています。

時間を計測してみる

文字列を結合する方法で、『&』を使う方法は簡単です。しかし、遅いです。

時間を計測してみます。

20万回『A』を結合していくVBAコードです。

Sub TEST7()
    
    a = ""
    For i = 1 To 200000
        '最終文字の前まで
        If i < 200000 Then
            a = a & "A,"
        '最終文字
        Else
            a = a & "A"
        End If
    Next
     
End Sub

こちらのVBAコードを実行してみます。

時間は、

『29.4秒』

かかりました。

20万回も文字列を結合することはあまりないのでちょっと極端な例です。

しかしながら、VBAコードが複雑になって文字列の結合を大量にする必要がある場合は、やはり遅いと感じる場面もでてくるかと思います。

文字列の結合を高速にしたい場合は、次の『Join』を使う方法をおすすめします。

VBAで『Join』を使って文字列を結合

Excel VBAで文字列を結合するVBA関数『Join』について説明します。

文字列を結合

まず、VBA関数『Join』の使い方です。

文字『A』と『B』の文字列を『Join』を使ってコンマ区切りで結合するVBAコードです。

Sub TEST8()
    
    '配列を作成
    ReDim a(0 To 1)
    a(0) = "A"
    a(1) = "B"
    
    '文字列を結合する
    b = Join(a, ",")
    
    MsgBox b
    
End Sub

手順としては、

  • ①結合したい文字列の配列を作成する
  • ②『Join』を使ってコンマ区切りで文字列を結合する

という流れです。

手順①:結合したい文字列の配列を作成する

『Join』を使って文字列を結合するには、結合したい文字列を配列にする必要があります。

'配列を作成
ReDim a(0 To 1)
a(0) = "A"
a(1) = "B"

文字『A』と『B』を配列aに格納します。

手順②:『Join』を使ってコンマ区切りで文字列を結合する

コンマ区切りで文字列を結合するには、次のようにVBAコードを記載します。

'文字列を結合する
b = Join(a, ",")

変数の入力は、『結合された文字列 = Join(配列, 区切り文字)』というようにします。

今回はコンマ区切りで結合しています。改行区切りや半角スペース区切りで結合したい場合はこの部分を変えればできます。

では、結果をみてみます。

実行結果

Joinを使って文字列を結合した結果

結果は、『A,B』となりました。

複数の文字列を結合

さらに複数の文字列を結合したいという場合は、配列を大きくしてやればできます。

ちょっと配列を大きくして文字列を結合する例です。

文字A~Fをコンマ区切りで結合するVBAコードです。

Sub TEST9()
    
    '配列を作成
    ReDim a(0 To 5)
    a(0) = "A"
    a(1) = "B"
    a(2) = "C"
    a(3) = "D"
    a(4) = "E"
    a(5) = "F"
    
    '文字列を結合する
    b = Join(a, ",")
    
    MsgBox b
    
End Sub

では結果をみてみます。

複数の文字列をコンマ区切りで結合した結果

複数の文字列をコンマ区切りでJoinを使って結合した結果

結果は、『A,B,C,D,E,F』となりました。

時間を計測してみる

では、問題の時間を計測してみます。

先ほど『&』を使って文字列を結合した条件と同じで、20万個の『"A"』をコンマ区切りで結合してみます。

Sub TEST10()
    
    '配列を作成
    ReDim a(1 To 200000)
    For i = 1 To UBound(a)
        a(i) = "A"
    Next
    
    '文字列を結合する
    b = Join(a, ",")
        
End Sub

実行してみます。結果は、

『0.06秒』

となりました。

先ほどの『&』を使って結合した場合が『29.4秒』でしたので、かなり高速に文字列を結合できていることがわかります。

VBAコードを高速化したい場合は、文字列を結合する際に『Join』を検討してみてください。

おわりに

この記事では、文字列を結合する方法について2つご紹介しました。

簡単に文字列を結合したい場合は、『&』を使うと楽です。

高速に文字列を結合したいという場合は、『Join』が必要になってきます。

文字列を結合する場面に応じて使い分けるといいかと思います。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す