【VBA】Join関数で、配列の全要素を一つの文字列に連結する方法

目次

はじめに

VBAで配列に格納した複数の文字列データを、"東京,大阪,名古屋" のように、特定の区切り文字を挟んで一つの文字列にまとめたい、という場面はよくあります。Forループを使って一つずつ文字列を連結していく方法もありますが、もっとスマートな方法があります。

それが、VBAの Join() 関数です。Join関数を使えば、配列の全要素を指定した区切り文字で連結するという処理を、たった一行で、非常にシンプルに記述できます。

この記事では、Join関数の基本的な使い方と、その便利な活用例について、分かりやすく解説します。


Join関数を使ったサンプルコード

このマクロは、4つの都市名が格納された配列を作成し、Join関数を使ってそれらをカンマとスペース(, )で連結し、結果をメッセージボックスに表示します。

完成コード

' Join関数で配列の要素を文字列に連結する
Sub JoinArrayElements()
    
    Dim cityArray As Variant
    Dim resultText As String
    Dim delimiter As String
    
    '--- 1. 連結したい要素を持つ配列を準備 ---
    cityArray = Array("札幌", "横浜", "京都", "福岡")
    
    '--- 2. 区切り文字を準備 ---
    delimiter = ", " ' カンマと半角スペース
    
    '--- 3. Join関数で配列を連結 ---
    resultText = Join(cityArray, delimiter)
    
    '--- 4. 結果を表示 ---
    MsgBox resultText
    ' 表示結果: 札幌, 横浜, 京都, 福岡

End Sub

コードの解説

resultText = Join(cityArray, delimiter)

これが Join関数の核心部分です。

Join(元の配列, [区切り文字])

  • 第1引数 (cityArray): 連結したい要素が格納されている1次元配列を指定します。
  • 第2引数 (delimiter): 各要素を連結する際に、間に挟む**区切り文字(デリミタ)**を文字列で指定します。この引数は省略可能で、省略した場合は半角スペースが区切り文字として使われます。

この例では、cityArray の各要素が , という文字列で連結され、"札幌, 横浜, 京都, 福岡" という一つの文字列が生成されて resultText に代入されます。

改行で連結する

区切り文字に、改行を表すVBAの定数 vbCrLf を指定すれば、各要素を改行して連結することもできます。これは、結果をメッセージボックスやセルに複数行で表示したい場合に非常に便利です。

' 改行で連結する例
Sub JoinWithNewLine()
    Dim taskArray As Variant
    taskArray = Array("タスクA", "タスクB", "タスクC")
    
    ' 区切り文字に vbCrLf を指定
    MsgBox Join(taskArray, vbCrLf)
End Sub

まとめ

今回は、VBAの Join関数を使って、配列の全要素を簡単・高速に一つの文字列へ連結する方法を解説しました。

  • Join(配列, 区切り文字) の構文で、配列を一つの文字列に変換できる。
  • Split関数とは逆の働きをする関数。

Forループで文字列を一つずつ & で連結していくよりも、Join関数を使った方がコードがシンプルになり、処理も高速です。ログの作成や、CSV形式の文字列生成など、様々な場面で活躍する非常に便利な関数ですので、ぜひ覚えておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次