Home » Excel VBA Rangeオブジェクト » 結合セル » セル結合時にデータもマージするExcelマクロ

セル結合時にデータもマージするExcelマクロ

対象:Excel2002, Excel2003, Excel2007, Excel2010

Excelでセルの結合を行うと、よろしくない現象がいろいろ発生するので、私個人としてはセル結合を利用することはほとんどありません。

セル範囲の中央に文字列を簡単に表示するために[セルを結合して中央揃え]ボタンを利用する方が多いと思いますが、その場合、[選択範囲内で中央]を指定すればいいはずなのです。

しかし現実としては、セル結合に関連するご質問や要望をいただくことは、少なくありません。

もっとも多いのがセルを結合するショートカットキーでしょう。

セルを結合するそのままのショートカットキーは用意されていませんが、2003までのExcelなら[セルの結合]ボタンをツールバーに作成してボタンのテキストを表示するという方法で、Excel 2007・2010ならクイックアクセスツールバーに[セルの結合]ボタンを作成することで、アクセスキーをショートカットキーもどきとして使うことができます。

[スポンサードリンク]

セル結合時にデータもマージしたい

ショートカットキーについで多いのが、セルを結合するときにデータも一緒にマージできないのか、といったご質問・要望です。

データの入力されている複数のセルを結合しようとすると
「選択範囲には複数のデータ値があります。1つのセルとして結合すると、選択したセル範囲にある最も左上端にあるデータのみが保持されます(空白セルは無視されます)。」
といったメッセージが表示され、そのまま結合を実行すると左上端セルのデータだけが残ります。

これを、左上端のデータだけでなく、すべてのデータを残して、データをマージしてセル結合をしたいという要望をいただくことがあります。

セル結合時にデータもマージするサンプルマクロ

左上端のデータだけ残るのがExcelの仕様でデータをマージしてセルを結合する機能は標準では用意されていないので、VBA(Visual Basic for Application)でマクロを組みましょう。

Sub セル結合時にデータもマージする()
 Dim rng As Range
 Dim txt As String
 
 For Each rng In Selection
  txt = txt & rng.Text
 Next

 Application.DisplayAlerts = False
 Selection.MergeCells = True
 Selection.Value = txt
 Application.DisplayAlerts = True

End Sub

最初の、
 For Each rng In Selection.Cells
  txt = txt & rng.Text
 Next
の部分で、選択されているセルのデータを変数txtに格納しています。

データをマージしたいという要望の場合、本当の単なるデータ・Valueよりは、書式も含めたデータということが多いでしょうから、ここではTextを変数に追記していきます。

その後、
 Selection.MergeCells = True
でセルを結合して
 Selection.Value = strText
でそのセルに先の変数txtの値を入れています。

本当に必要な処理は上記の5行だけで、あとはメッセージが表示されないように
 Application.DisplayAlerts = False
とする定番の処理を入れています。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 結合セル » セル結合時にデータもマージするExcelマクロ

「結合セル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.