📊 Excel VBA Top100
🎨

MergeCellsFormatting

書式設定

選択範囲のセルを結合し、中央揃えで書式設定します

選択した複数のセルを結合して中央揃えにするマクロです。Excelの「セルを結合して中央揃え」ボタンと同じ処理をVBAで自動化しており、タイトル行・グループヘッダー・カテゴリ見出しなどの書式設定に使います。複数のセル範囲を一括で結合する処理や、特定のパターンで自動結合するカスタム処理にも応用できます。ただし結合セルはソートやフィルターに制限が生じるため、印刷用の最終資料での使用が適しています。内部ではRange.Mergeメソッドを使ってセルを結合した後、HorizontalAlignmentプロパティで中央揃えを設定しています。結合セルはExcelの構造上ソートやフィルターの対象にならないため、SortDataやFilterDataを使うデータ管理用の表には向きません。あくまで印刷用のレイアウトやタイトル部分の整形に限定して使うのが安全な運用です。

MergeCellsFormatting デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 結合したいセル範囲を選択してから MergeCellsFormatting を実行します

🎯 活用シーン

  • ✓月次レポートのタイトル行や表のヘッダーを複数列にわたって結合して、見出しを見やすく整えたいとき
  • ✓カテゴリ別の集計表でカテゴリ名を縦方向に結合して、グループの区切りを視覚的にわかりやすくしたいとき
  • ✓印刷用の帳票で特定のフィールドを結合してレイアウトを整え、正式な文書として提出できる書式に仕上げたいとき
  • ✓見積書や請求書のテンプレートでタイトル部分を複数列にわたって結合し、正式な帳票レイアウトに整えたいとき
  • ✓部門横断のプロジェクト計画表で、期間ごとのヘッダーセルを結合して視認性を高めたいとき

💡 実装のヒント

  • ▸結合前に含まれる値は左上セルの値のみ保持され、他のセルの値は消えます。重要なデータが入っていないか確認してから実行してください。
  • ▸結合セルはソート・フィルター・コピー&ペーストに制限が生じます。データ操作が必要な表では使用を避け、印刷専用の書式設定にとどめることをお勧めします。
  • ▸結合を解除したい場合はUnmergeCellsFormattingマクロを使用してください。解除後は結合前の値がすべての個別セルに戻るわけではないことに注意してください。
  • ▸結合前にAutoFitColumnsで列幅を整えておくと、結合後の見出しが読みやすいバランスに仕上がります。
  • ▸複数の結合セルを一括で作成したい場合は、結合範囲をあらかじめ配列で定義しループ処理すると効率的です。

💻 VBAコード

' MergeCellsFormatting
' -----------------
' Macro Name: MergeCellsFormatting
' Description: 選択範囲のセルを結合し、中央揃えで書式設定します
' Parameters: なし
' Returns: なし
' Usage: 結合したいセル範囲を選択してから MergeCellsFormatting を実行します
' -----------------

Sub MergeCellsFormatting()
    On Error GoTo ErrorHandler

    Dim rng As Range

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    If rng.Cells.Count < 2 Then
        MsgBox "2つ以上のセルを選択してください", vbCritical, "エラー"
        Exit Sub
    End If

    Application.DisplayAlerts = False
    With rng
        .Merge
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    Application.DisplayAlerts = True

    MsgBox "セルを結合しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    Application.DisplayAlerts = True
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub