この記事では、VBAマクロを使用してExcelの結合セルを判定し、セル番号を出力する方法(複数や途中に空白がある場合も解説)について解説していきます。
ポイントとしては
Range関数、
Cells関数、
そしてMergeArea関数
を使用することです。
これらの関数を利用することで、結合セルの存在を確認し、その位置を特定することができます。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切なものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで結合セルの判定とセル番号の出力方法(複数セルにも対応)【Range関数、Cells関数】
それではまず、結合セルが複数セルでも可能のケースにて結合セルの判定・セル位置の出力を行う方法について解説していきます。
具体的には、Range関数とCells関数を使用して、結合セルを特定するといいです。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
以下のコードでは、「Sheet1」のA1セルから開始して最終行と最終列までの範囲を調べ、結合セルを見つけたらそのアドレスを「Sheet2」のA列に順に出力します。
Sub KesetsuCellHantei1()
Dim hensuu As Range
Dim SaishuGyo As Long
Dim SaishuRetsu As Long
Dim OutputGyo As Long
' 最終行と最終列を取得
SaishuGyo = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, 1).End(xlUp).Row
SaishuRetsu = Sheets("Sheet1").Cells(1, Sheets("Sheet1").Columns.Count).End(xlToLeft).Column
' 出力する行を初期化
OutputGyo = 1
' 結合セルを探すループ
For Each hensuu In Sheets("Sheet1").Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(SaishuGyo, SaishuRetsu))
' 結合セルを判定
If hensuu.MergeCells Then
' 結合セルの場合はセルアドレスをSheet2に出力
Sheets("Sheet2").Cells(OutputGyo, 1).Value = hensuu.Address
OutputGyo = OutputGyo + 1 ' 出力行を更新
End If
Next hensuu
End Sub
Alt + F11にてVBE画面を開いて、上記のコードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でKesetsuCellHantei1関数を実行します。
このコードはSheet1で見つかった結合セルのアドレスをSheet2のA列に順番に出力します。
この際、OutputGyo変数を用いて出力する行番号を管理しています。そして、新しいアドレスを出力する前にOutputGyo変数を更新して、次の行に出力するようにしています。
この方法で、結合セルのアドレスをシート上に一覧できるようになります。
注意点としては、このコードを実行する前に「Sheet2」が存在している必要がありますので、事前にシートを追加しておくことをお勧めします。
結合セル判定マクロの出力結果の様子!
上の結合セルをチェック・判定するVBAマクロを使用の様子を見ていきましょう。
以下のオレンジ部分が結合セルとなっています!
マクロを実行すると、以下の通りSheet2のA列に順に結合セルのセル番号が出力されています。
きちんと結合セルの場所が判定できまていますね(^^)/
複数セルにも対応
以下のように複数の結合セルがあってもうまくその位置を検出できます。
マクロ実行後は以下の通り。
きちんと結合セルのセル位置が返されているのがわかりますね!
まとめ エクセルのマクロで結合セルを判定しそのセル番号を出力する方法(複数や途中に空白がある場合も解説)【ExcelマクロExcel:Range, Cells, MergeArea】
以上が、VBAマクロを用いた結合セルの判定方法とセル番号の出力方法です。
この知識を利用することで、Excel作業がより効率的になります。
さらに試行錯誤を重ねて、自身のニーズに最適なマクロを作成してみてください(^^)/!!