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 を使う場面が多い。
いいなと思ったら応援しよう!
技術メモや学習の整理として書いています。
もし内容が役に立ったり、続きを読みたいと思っていただけたら、
応援として受け取らせてもらえたら嬉しいです。