🎨
UnmergeCellsFormatting
書式設定選択範囲の結合セルを解除し、各セルに値を複製します
選択した範囲内のすべての結合セルを解除するマクロです。結合セルが含まれるとソート・フィルター・コピー&ペーストなどの操作に制限が生じますが、このマクロで結合を解除することでこれらの制限を解消できます。Excelの「セルの結合と中央揃え」ボタンと同じ処理をVBAで自動化しており、多数の結合セルを一括で解除できます。データ操作用とレイアウト用でシートを分けて管理する際の準備処理としても活躍します。内部ではRange.UnMergeメソッドを選択範囲内のすべての結合セルに適用しており、MergeCellsFormattingで作成した結合を元に戻す対の関係にあります。結合解除後は左上セルの値のみが残るため、必要に応じてFillBlankCellsで空白になった残りのセルを補完すると、データベース形式として扱いやすい表に整えられます。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 対象範囲を選択してから UnmergeCellsFormatting を実行します
🎯 活用シーン
- ✓結合セルが多数含まれる表をソートやフィルタリングできるように変換するために、結合を解除して通常の範囲に戻したいとき
- ✓複数シートのデータを統合する前処理として、各シートの結合セルを一括解除してデータを扱いやすくしたいとき
- ✓テンプレートから作成した帳票の結合セルを解除して、データベースにインポートできる形式に変換したいとき
- ✓見た目重視で作られた帳票をデータベース形式に変換し、集計・分析に使えるようにしたいとき
- ✓他部署から受け取った結合セルだらけの表を、ソートやフィルターが使える通常のデータ表に直したいとき
💡 実装のヒント
- ▸結合解除後は、結合の左上セルにあった値のみが残り、他のセルは空白になります。必要なデータが上書きされていないか事前に確認してください。
- ▸結合セルを解除した後にFillBlankCellsを実行すると、解除後の空白セルを上の値で埋めることができます。
- ▸「セルを結合して中央揃え」でなく「横方向に結合」で結合されたセルも同じ方法で解除できます。
- ▸結合解除前にどのセルに値が入っているか確認しておくと、想定外のデータ消失を防げます。
- ▸ピボットテーブルの元データとして使う場合は、結合セルを事前にすべて解除しておく必要があります。
💻 VBAコード
' UnmergeCellsFormatting
' -----------------
' Macro Name: UnmergeCellsFormatting
' Description: 選択範囲の結合セルを解除し、各セルに値を複製します
' Parameters: なし
' Returns: なし
' Usage: 対象範囲を選択してから UnmergeCellsFormatting を実行します
' -----------------
Sub UnmergeCellsFormatting()
On Error GoTo ErrorHandler
Dim rng As Range
Dim cell As Range
Dim mergedArea As Range
Dim mergedValue As Variant
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
Exit Sub
End If
Set rng = Selection
For Each cell In rng
If cell.MergeCells Then
Set mergedArea = cell.MergeArea
mergedValue = mergedArea.Cells(1, 1).Value
mergedArea.UnMerge
mergedArea.Value = mergedValue
End If
Next cell
MsgBox "セルの結合を解除しました", vbInformation, "完了"
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub