8/29/2020

Excel。VBA。アチラコチラに結合されたセル。ちまちま解除するのが面倒なんです。【Uncoupling】

 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で作ることができますので、少しずつ、確認して使えるようにしていくといいですね。