Excel VBA 逆引き集 | JOIN処理

Excel VBA
スポンサーリンク

JOIN処理(配列を文字列に結合)

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


基本の考え方

  • 構文: Join(配列, 区切り文字)
  • 動作:
    • 一次元配列の要素を文字列として結合。
    • 区切り文字を指定できる(カンマ、スペース、改行など)。
  • 用途:
    • CSV形式の文字列作成。
    • ログ出力。
    • 配列を一気に文字列化して確認。

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

Sub Join_Comma()
    Dim fruits As Variant
    fruits = Array("りんご", "みかん", "バナナ")

    Dim result As String
    result = Join(fruits, ", ")

    MsgBox result ' → "りんご, みかん, バナナ"
End Sub
VB
  • ポイント: 配列を一気に文字列化できる。

テンプレ2:スペース区切りで結合

Sub Join_Space()
    Dim words As Variant
    words = Array("Excel", "VBA", "Join")

    Dim result As String
    result = Join(words, " ")

    MsgBox result ' → "Excel VBA Join"
End Sub
VB
  • ポイント: 区切り文字を " " にすると文章風に結合できる。

テンプレ3:改行で結合(ログ出力に便利)

Sub Join_NewLine()
    Dim lines As Variant
    lines = Array("処理開始", "データ読み込み", "処理完了")

    Dim result As String
    result = Join(lines, vbCrLf)

    MsgBox result
End Sub
VB
  • 結果: 処理開始 データ読み込み 処理完了

テンプレ4:シートの列を配列化して結合

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

    Dim v As Variant: v = ws.Range("A2:A" & lastRow).Value

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

    Dim result As String
    result = Join(arr, ", ")

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

テンプレ5:JOINでCSV形式を作成

Sub Join_ToCSV()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("A2:C5")
    Dim v As Variant: v = rg.Value

    Dim r As Long, c As Long, line As String, result As String
    For r = 1 To UBound(v, 1)
        Dim arr() As String
        ReDim arr(1 To UBound(v, 2))
        For c = 1 To UBound(v, 2)
            arr(c) = v(r, c)
        Next c
        line = Join(arr, ",")
        result = result & line & vbCrLf
    Next r

    MsgBox result
End Sub
VB
  • ポイント: 各行を配列化して Join → CSV形式の文字列を作れる。

例題で練習

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

'例2:スペース区切りで結合
Sub Example2()
    Join_Space
End Sub

'例3:改行で結合
Sub Example3()
    Join_NewLine
End Sub

'例4:シートの列を結合
Sub Example4()
    Join_FromSheet
End Sub

'例5:CSV形式を作成
Sub Example5()
    Join_ToCSV
End Sub
VB

初心者向けポイント

  • Joinは一次元配列専用 → 二次元配列は変換が必要。
  • 区切り文字を工夫", "" "vbCrLf など。
  • CSV作成に便利 → 行ごとに配列化して Join
  • ログ出力にも最適 → 改行で結合すれば処理履歴をまとめられる。

👉 この「JOIN処理テンプレ」を覚えておけば、配列を 一気に文字列化・CSV化・ログ化 できるので、実務でのデータ処理がぐっと楽になります。

タイトルとURLをコピーしました