Excel VBA 逆引き集 | 文字列配列の一括結合

Excel VBA
スポンサーリンク

文字列配列の一括結合

Excel VBAで「文字列の配列をまとめて一つの文字列にしたい」ときに便利なのが Join 関数 です。初心者でもすぐに使えるように、コード例とテンプレートをかみ砕いて説明します。


基本の考え方

  • Join関数: Join(配列, 区切り文字)
  • 用途: 配列の要素を「カンマ区切り」「改行区切り」などでまとめる。
  • 逆処理: Split(文字列, 区切り文字) で文字列を配列に戻せる。

テンプレ1:一次元配列をカンマ区切りで結合

Sub JoinArray_Comma()
    Dim fruits As Variant
    fruits = Array("りんご", "みかん", "バナナ", "ぶどう")

    Dim result As String
    result = Join(fruits, ",") ' カンマ区切りで結合

    MsgBox result
End Sub
VB
  • 結果: りんご,みかん,バナナ,ぶどう
  • ポイント: 区切り文字を自由に指定できる。

テンプレ2:改行で結合してメッセージ表示

Sub JoinArray_NewLine()
    Dim fruits As Variant
    fruits = Array("りんご", "みかん", "バナナ", "ぶどう")

    Dim result As String
    result = Join(fruits, vbCrLf) ' 改行で結合

    MsgBox result
End Sub
VB
  • 結果: りんご みかん バナナ ぶどう
  • ポイント: vbCrLf を使うと改行区切りになる。

テンプレ3:シートの値を配列に読み込み → Joinで結合

Sub JoinArray_FromRange()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' A列を配列に読み込む
    Dim v As Variant
    v = ws.Range("A2:A" & lastRow).Value

    ' 一次元配列に変換
    Dim arr() As String
    ReDim arr(1 To UBound(v, 1))
    Dim i As Long
    For i = 1 To UBound(v, 1)
        arr(i) = v(i, 1)
    Next i

    ' Joinで結合
    Dim result As String
    result = Join(arr, ", ")

    MsgBox result
End Sub
VB
  • ポイント: Rangeを読み込むと二次元配列になるので、一次元に変換してから Join

テンプレ4:Splitと組み合わせて再利用

Sub JoinArray_SplitExample()
    Dim text As String
    text = "りんご,みかん,バナナ,ぶどう"

    ' Splitで文字列→配列
    Dim arr As Variant
    arr = Split(text, ",")

    ' Joinで配列→文字列(改行区切り)
    Dim result As String
    result = Join(arr, vbCrLf)

    MsgBox result
End Sub
VB
  • ポイント: SplitJoinはセットで覚えると便利。

例題で練習

'例1:配列をカンマ区切りで結合
Sub Example_Comma()
    JoinArray_Comma
End Sub

'例2:配列を改行区切りで結合
Sub Example_NewLine()
    JoinArray_NewLine
End Sub

'例3:シートのA列を配列に読み込み→結合
Sub Example_FromRange()
    JoinArray_FromRange
End Sub

'例4:SplitとJoinを組み合わせて変換
Sub Example_SplitJoin()
    JoinArray_SplitExample
End Sub
VB

初心者向けポイント

  • Joinは一次元配列専用: 二次元配列はそのまま使えない。一次元に変換する必要あり。
  • 区切り文字を工夫: ","vbCrLf などで用途に合わせて。
  • Splitとセットで覚える: 「文字列⇔配列」の変換が自由自在になる。
  • 大量データでも高速: 文字列結合をループでやるより圧倒的に速い。
タイトルとURLをコピーしました