Excel VBA 逆引き集 | 結合

Excel VBA
スポンサーリンク

結合(文字列や配列の結合)

Excel VBAで「複数の文字列をまとめたい」「配列を一つの文字列にしたい」ときに便利なのが 結合処理 です。初心者向けに、コード例とテンプレートをかみ砕いて説明します。


基本の考え方

  • 文字列結合: & 演算子で文字列をつなげる。
  • Join関数: 配列の要素をまとめて一つの文字列にする。
  • 用途: 顧客名リストをまとめる、住所を一行にする、CSV形式を作るなど。

テンプレ1:文字列を単純に結合

Sub Concat_String()
    Dim s1 As String, s2 As String
    s1 = "Excel"
    s2 = "VBA"

    Dim result As String
    result = s1 & " " & s2

    MsgBox result ' → "Excel VBA"
End Sub
VB
  • ポイント: & を使えば簡単に文字列をつなげられる。

テンプレ2:複数セルの値を結合

Sub Concat_Range()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim result As String

    result = ws.Range("A1").Value & " - " & ws.Range("B1").Value

    MsgBox result
End Sub
VB
  • ポイント: セルの値を結合して一つの文字列にできる。

テンプレ3:配列を一括結合(Join関数)

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

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

    MsgBox result ' → "りんご, みかん, バナナ, ぶどう"
End Sub
VB
  • ポイント: Join は一次元配列専用。区切り文字を指定できる。

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

Sub Concat_Column()
    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
    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

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

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

テンプレ5:結合してCSV形式を作る

Sub Concat_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)
        line = ""
        For c = 1 To UBound(v, 2)
            line = line & v(r, c)
            If c < UBound(v, 2) Then line = line & ","
        Next c
        result = result & line & vbCrLf
    Next r

    MsgBox result
End Sub
VB
  • ポイント: 行ごとに結合してCSV形式を作れる。

例題で練習

'例1:文字列を結合
Sub Example1()
    Concat_String
End Sub

'例2:セルの値を結合
Sub Example2()
    Concat_Range
End Sub

'例3:配列を一括結合
Sub Example3()
    Concat_Array
End Sub

'例4:列を配列化して改行区切りで結合
Sub Example4()
    Concat_Column
End Sub

'例5:表をCSV形式に結合
Sub Example5()
    Concat_ToCSV
End Sub
VB

初心者向けポイント

  • 文字列結合は「&」が基本: + ではなく & を使う。
  • Joinで配列を一括結合: 区切り文字を自由に指定できる。
  • Rangeは二次元配列: 一次元に変換してからJoin。
  • CSV形式も作れる: 行ごとに結合して改行を入れる。
  • 大量データでも高速: 配列で処理してから一括で出力する。
タイトルとURLをコピーしました