Excel。VBA。アチラコチラに結合されたセル。ちまちま解除するのが面倒なんです。
<Excel VBA:MergeCellsプロパティ・UnMergeメソッド>
以前作った資料。
セルが結合されているので解除して使いたいけど、アチラコチラにセルが結合されていて、イチイチ解除するとなると、ちょっと面倒な作業です。
シート全体とか列全体とかだったら、範囲選択して一括解除ができるのでいいのですが、ここだけ、解除したい場合、範囲選択するだけでも、面倒です。
そこで、マクロ。Excel VBAをつくって、簡単にセルの結合を解除させちゃいましょう。
次の資料を用意しました。
今回は、わかりやすいように、6行目・10行目・14行目の「~合計」がセルの結合をしている場所です。
これだけなら、マクロを作る必要はありませんが、サンプルということでご了承ください。
Excel VBAのプログラム文です。
Sub 結合セル解除()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "c").End(xlUp).Row
For i = 1 To lastrow
If Cells(i, "a").MergeCells = True Then
Cells(i, "a").UnMerge
End If
Next i
End Sub
まずは、実行して確認してみましょう。
このように、セルの結合を解除することができました。
では、簡単に説明していきましょう。
お馴染みの変数宣言ですね。
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "c").End(xlUp).Row
lastrow=~の行は、データ件数を抽出するためのものです。
今回は、C列を使っております。
C列の一番下のデータの行が繰り返しの最大数になるわけですね。
For To Next文で繰り返し処理をします。
i=1にしていますが、2でもOKですね。
そして、最終行まで繰り返し処理を実施します。
For i = 1 To lastrow
~
Next i
プログラム文の心臓部ですね。
If Then EndIf 文で条件分岐させています。
If Cells(i, "a").MergeCells = True Then
このIf文の条件でつかっている、MergeCellsプロパティは、セルが結合されているかどうかをチェックするためのプロパティです。
結合していたら、Trueを返してくれます。
結合してないセルは、Falseを返します。
なので、条件文としては、セルが結合されていれば、次の処理をしてください。という意味になります。
いよいよ、実行したい処理へと進んできます。
Cells(i, "a").UnMerge
UnMergeメソッドは、セルの結合を解除するためのメソッドです。
たったこれだけです。
余談ですが、UnMergeメソッドがセルの結合を解除するメソッドということなので、「Un」を取った、Mergeメソッドをつかうと、セルの結合をすることができます。
使い方は、
Range(“a2:b2”). Merge
というように範囲選択させて、セルの結合を実行します。
それほど、多くのプログラム文を書かなくても、色々なことがExcel VBAで作ることができますので、少しずつ、確認して使えるようにしていくといいですね。