配列で JOIN 処理
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- ポイント:
SplitとJoinはセットで覚えると便利。
例題で練習
'例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とセットで覚える: 「文字列⇔配列」の変換が自由自在になる。
- 大量データでも高速: 文字列結合をループでやるより圧倒的に速い。
