エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか?

Mergeメソッドを書き加えれば、自動的にセルの複数一括結合・解除を自動的に行ってくれるので、並べ替え時のエラーを回避できる方法をご紹介します。

Mergeメソッド

VBAでセルの結合・解除は、Mergeメソッドを使いますが、エラーを防ぐ為に結合・解除するセルの範囲の左上端の入力値がセルを指定します。

その為にその他のセル入力値は削除されるので注意してください。

Mergeメソッドでセル結合

まず、Mergeメソッドの基本的な使い方の例として、セルA1とセルB1の隣同士を結合するVBAコードをご紹介します。

ここではユーザーフォームに配置したコマンドボタンに記載している例です。

VBAコード

Private Sub CommandButton1_Click()
Range(“A1:B1”).Merge
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. セルA1とB1を結合する
  3. マクロ記録終了

このようにとても簡単で、ここではRangeを使いましたが、繰り返し処理の変数を使う時はCellsを使うので下記のようになります。

VBAコード

Private Sub CommandButton1_Click()
Range(Cells(1, 1), Cells(1, 2)).Merge
End Sub

今回の例は隣同士のセルを結合するVBAコードですが、もちろんA1:C1とすれば横3列を結合、A1:B2とすれば縦横4つのセルが結合できます。

UnMergeメソッドでセル解除

結合の次はセルの結合解除も重要ですが、とても簡単な事で結合時に使った「Merge」を解除の「UnMerge」に変えるだけでセルを解除できます。

VBAコード

Private Sub CommandButton1_Click()
Range(“A1:B1”).UnMerge
End Sub

このように簡単にVBAコードを書くことができます。

行単位で複数のセル結合・解除

1か所のセルの結合・解除を行うのならばVBAを使わないと思いますが、複数の行をまとめて一括処理で結合・解除を行わなくてはいけないのでVBAを使うと思います。

ここでは、Mergeメソッドの引数AcrossをTrueに設定することで、選択範囲のセルを行単位で結合することができるようになります。

例としてRangeを使ってセル範囲A1:B10を行単位で結合するVBAコードをご紹介します。

VBAコード

Private Sub CommandButton1_Click()
Range(“A1:B10”).Merge True
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. セルA1~B1の範囲を行単位で結合する
  3. マクロ記録終了

これでA1とB1が結合A2とB2が結合・・・A10とB10が結合と行単位結合の完成です。

※引数Trueを入れ忘れるとA1からB10が全て結合されるので注意!

ちなみに行単位で結合したセルを結合解除する方法は、基本的なセル結合解除と一緒です。

セル結合のある表の並べ替え

セルの結合・解除を行いながらエクセルで作った表の並べ替えをVBAを使って実行する方法をご紹介します。

ここでは下の図のようにセルB2~C10を行単位で結合して点数を見やすくするVBAコードで、同時に点数の多い順に並べ替えも同時に行います。

Merge結合
VBAコード

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range(“B2:C10”).UnMerge
Range(“A2:D10”).Sort KEY1:=Range(“B1”), ORDER1:=xlDescending
Range(“B2:C10”).Merge True
ActiveSheet.Protect
Application.ScreenUpdating = True
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 画面の移動を停止(ちらつき防止)
  3. シートの保護を解除
  4. セル範囲B2~C10のセル結合解除する
  5. セル範囲A2~D10を並べ替える(最優先セルB列・大きい順)
  6. セル範囲B2~C10を行単位でセル結合する
  7. シートの保護
  8. 画面移動停止解除
  9. マクロ記述終了

ここでは、実際に使っているように画面のちらつきを防ぐVBAコードと、シートの保護・解除も付け加えています。

波乗りアヒル

並べ替えエラーを防ぐためにこのような順でVBAコード記述すれば、エラーが出なくなります。
順番を間違えるとエラーになりますよ!

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。