Excel VBA | データ結合(Offset × 条件分岐 × Join)の黄金パターン集

VBA
スポンサーリンク

ここでは 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」パターン集を使えば、売上表・勤怠表・在庫表などの 複合データの結合・整形処理 を一瞬で自動化できます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました