ここでは Offset × 条件分岐 × Join を組み合わせて「複数セルの値を結合し、隣列や下段に出力する」黄金パターンをまとめます。
Split が「分割」なら、Join は「結合」。複数要素を 1 つの文字列にまとめる処理です。
基本パターン 10選
1. 氏名を「姓+名」に結合
Dim r As Range
For Each r In Range("A2:B20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), " ")
End If
Next r
VB👉 姓と名をスペース区切りで結合。
2. 商品コード+番号を結合
Dim r As Range
For Each r In Range("C2:D20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), "-")
End If
Next r
VB👉 「FRU」「001」を「FRU-001」に結合。
3. 日付要素を結合
Dim r As Range
For Each r In Range("E2:G20").Rows
If IsNumeric(r.Cells(1, 1).Value) And IsNumeric(r.Cells(1, 2).Value) And IsNumeric(r.Cells(1, 3).Value) Then
r.Cells(1, 4).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value, r.Cells(1, 3).Value), "/")
End If
Next r
VB👉 「2025」「11」「28」を「2025/11/28」に結合。
4. 勤怠時刻を結合
Dim r As Range
For Each r In Range("H2:I20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), "-")
End If
Next r
VB👉 「09:00」「18:00」を「09:00-18:00」に結合。
5. 在庫情報を結合
Dim r As Range
For Each r In Range("J2:K20").Rows
If r.Cells(1, 1).Value <> "" And IsNumeric(r.Cells(1, 2).Value) Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), ":")
End If
Next r
VB👉 「りんご」「50」を「りんご:50」に結合。
6. メールアドレスを結合
Dim r As Range
For Each r In Range("L2:M20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), "@")
End If
Next r
VB👉 「taro」「example.com」を「taro@example.com」に結合。
7. 住所を結合
Dim r As Range
For Each r In Range("N2:O20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), " ")
End If
Next r
VB👉 「東京都」「江東区」を「東京都 江東区」に結合。
8. 電話番号を結合
Dim r As Range
For Each r In Range("P2:Q20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), "-")
End If
Next r
VB👉 「03」「1234」を「03-1234」に結合。
9. タグを結合して1セルにまとめる
Dim r As Range
For Each r In Range("R2:U20").Rows
Dim arr(1 To 4) As String
arr(1) = r.Cells(1, 1).Value
arr(2) = r.Cells(1, 2).Value
arr(3) = r.Cells(1, 3).Value
arr(4) = r.Cells(1, 4).Value
r.Cells(1, 5).Value = Join(arr, ",")
Next r
VB👉 複数列のタグを「A,B,C,D」と結合。
10. フルパスを結合
Dim r As Range
For Each r In Range("V2:W20").Rows
If r.Cells(1, 1).Value <> "" And r.Cells(1, 2).Value <> "" Then
r.Cells(1, 3).Value = Join(Array(r.Cells(1, 1).Value, r.Cells(1, 2).Value), "\")
End If
Next r
VB👉 「C:\Data」「Report.xlsx」を「C:\Data\Report.xlsx」に結合。
✅ まとめ
- Offset → 結合結果を隣列へ出力
- 条件分岐 → 空欄や数値判定を行い安全に処理
- Join → 配列要素を結合して文字列化
- 黄金パターン → 氏名・商品コード・日付・時刻・在庫・メール・住所・電話・タグ・パスなど
💡 この「データ結合 × Offset × 条件分岐 × Join」パターン集を使えば、売上表・勤怠表・在庫表などの 複合データの結合・整形処理 を一瞬で自動化できます。


