見出し画像

VBA|Excel操作|表示形式・見た目|Merge / UnMerge|セル結合と解除をVBAで制御する


■ 基本構文

Range("A1:C1").Merge
Range("A1:C1").UnMerge

各要素の意味

要素 意味
Range("A1:C1") 結合・解除するセル範囲
.Merge 指定範囲を結合する
.UnMerge 結合セルを解除する

戻り値の型・性質

項目 内容
対象 セル範囲
結合後の値 左上セルの値が残る
注意 結合範囲内の他セルの値は失われることがある


■ サンプルコード

サンプル1:最短実行例

役割:A1:C1を結合し、中央揃えにする。
理由:帳票タイトル行などでよく使う。
注意:結合前に複数セルへ値が入っている場合、左上以外の値に注意する。

Sub Sample_Merge_Min()
    Range("A1:C1").Merge
    Range("A1").Value = "売上一覧"
    Range("A1").HorizontalAlignment = xlCenter
End Sub

サンプル2:実務での定番例

役割:対象範囲の結合を解除し、値を各セルへ埋め直す。
理由:集計・フィルター・並べ替え前に、結合セルを通常セルへ戻すため。
注意:結合セルの値は左上セルにしか入っていないため、解除後に値を補完する。

Sub Sample_UnMerge_Practical()
    Dim targetRange As Range
    Dim area As Range
    Dim mergeValue As Variant

    Set targetRange = Range("A1:C10")

    For Each area In targetRange
        If area.MergeCells Then
            With area.MergeArea
                mergeValue = .Cells(1, 1).Value
                .UnMerge
                .Value = mergeValue
            End With
        End If
    Next area
End Sub

■ 備考

・セル結合は見た目を整える用途では便利だが、データ処理では扱いづらい。

・フィルター、並べ替え、集計、コピー処理を行う表では、結合セルを避ける方が安全である。

・結合セルの値は、基本的に結合範囲の左上セルに保持される。

・結合解除後も値を全セルに残したい場合は、解除前に値を退避してから再設定する。

・帳票出力では Merge、データ加工前処理では UnMerge を使う場面が多い。

いいなと思ったら応援しよう!

Parusの寺小屋 技術メモや学習の整理として書いています。 もし内容が役に立ったり、続きを読みたいと思っていただけたら、 応援として受け取らせてもらえたら嬉しいです。