複数の離れたセルMerge オブジェクトRange

Range

はじめに

Excelのセル結合は、主に見栄えを整えるために用いられ、表の見出しやカテゴリ名を強調する際に便利です。通常、連続したセル範囲(例:A1:B1)の結合が基本ですが、VBAでは「離れたセルをまとめて結合」するような操作も、状況に応じて必要になる場合があります。

ただし、Excelの仕様上「離れたセルを直接1つのセルに結合することはできない」という制限があります。VBAにおいても、離れたセルを Range("A1,B1") のように指定して Merge しようとすると、個別に結合されるという点が特徴です。


1. 基本の Merge 動作(連続セル)

まずはおさらいとして、連続したセルの結合は以下のように簡単に実現できます。

Range("A1:B1").Merge

この場合、A1とB1は1つの結合セルになり、左上セル(A1)の値のみが保持されます。


2. 離れたセル範囲を指定する

Range("A1,A3,A5").Merge

このコードを実行するとどうなるかというと…

✔ 結果:

各セルはそれぞれ単独として扱われ、結合はされません。また、エラーが発生します。

✔ 理由:

Excelでは、「非連続セル範囲を一つのセルに結合する」ことができません。そのため、VBAでも Range("A1,A3") のような非連続選択での Merge は、サポートされていない操作と見なされます。


3. 離れたセルを「個別に結合」する処理

では、以下のような意図がある場合、どうすればよいのでしょうか?

「A1とB1」「A3とB3」「A5とB5」…といった離れた複数の範囲を、それぞれペアで結合したい。

これはループ処理で実現するのが一般的です。


■ 使用例:複数の離れた範囲を個別に結合

Dim i As Long
For i = 1 To 5 Step 2
Range("A" & i & ":B" & i).Merge
Next i

このコードでは、A1:B1、A3:B3、A5:B5 がそれぞれ個別に結合されます。


4. 応用:指定した複数の離れた範囲を一括で結合処理

特定の範囲が不連続であっても、それぞれのペアを順に処理すれば、自動化が可能です。

■ 使用例:非連続な行のセルを横方向に結合

Dim rng As Range
Set rng = Union(Range("A1:B1"), Range("A3:B3"), Range("A5:B5"))

Dim area As Range
For Each area In rng.Areas
area.Merge
Next area

✔ ポイント

  • Union 関数を使って離れた範囲を1つの Range オブジェクトにまとめる
  • .Areas プロパティで、それぞれの範囲を分解し、ループで結合

5. Merge に関する制約と注意点(離れたセル編)

制約/注意点内容
非連続セルの一括結合は不可Range("A1,A3") では結合できない
各範囲をループ処理で個別に Merge する必要があるAreasUnion を使用
すでに結合済みセルが含まれるとエラーIf .MergeCells Then .UnMerge など事前解除が必要
セルの左上のみ値が残る値を結合範囲内に分散させたい場合は注意が必要

6. Mergeに関する便利プロパティ

プロパティ説明
MergeCells結合状態を示す Boolean 値(True/False)
MergeArea結合されたセルの全体範囲を返す
UnMerge結合を解除するメソッド
HorizontalAlignment結合後の中央揃え指定などに便利

7. 使用例:結合セルの操作とデータ保全

Dim cell As Range
For Each cell In Range("A1:B5")
If cell.MergeCells Then
With cell.MergeArea
MsgBox "結合セルの値は:" & .Cells(1, 1).Value
End With
End If
Next cell

8. 離れたセル結合の実務活用シナリオ

● 帳票レイアウトの装飾

離れた行に対して、タイトルやセクション名の結合をループ処理で適用可能。

● データ分類ラベルの設置

グループ化されたデータ行に対して、カテゴリ名の結合セルラベルを作成。

● フォーム項目の整列

左:ラベルセル、右:入力用結合セルのパターンでUIを構成。


9. エラー回避のためのTips

● 安全に結合操作するコードテンプレート

Dim area As Range
For Each area In rng.Areas
If area.MergeCells Then area.UnMerge
area.Merge
Next area

10. まとめ

項目内容
離れたセルの結合直接は不可(範囲は連続である必要あり)
対処方法Union + .Areas を用いて1つずつ結合
値の保持左上セルの値のみ有効。他は破棄される
結合前処理の推奨UnMerge を併用して安全に結合
実務への応用帳票・UIの見た目改善に活用可
タイトルとURLをコピーしました