Excelでブック内の結合セルの情報をリスト化するマクロを作成する

Excelでブック内の結合セルの情報をリスト化するマクロを作成する方法

Excelでは、セルを結合することで、見栄えを整えたり、データの構造を明確にすることができます。しかし、結合セルを多用すると、後でデータの整理や分析が難しくなることがあります。そこで今回は、Excelのブック内にある結合セルの情報をまとめてリスト化するVBAマクロの作成方法をご紹介します。

マクロのコード

Sub ListMergedCells()
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim cell As Range
    Dim i As Long

    ' 新しいワークシートを追加
    Set newWs = ThisWorkbook.Worksheets.Add

    ' ユニークなワークシート名を設定
    newWs.Name = UniqueWorksheetName("MergedCellsList")

    ' ヘッダーを設定
    newWs.Cells(1, 1).Value = "ワークシート"
    newWs.Cells(1, 2).Value = "結合セル位置"
    newWs.Cells(1, 3).Value = "縦サイズ"
    newWs.Cells(1, 4).Value = "横サイズ"
    newWs.Cells(1, 5).Value = "データ"

    i = 2

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> newWs.Name Then
            For Each cell In ws.UsedRange.Cells
                If cell.MergeCells And cell.Address = cell.MergeArea.Cells(1, 1).Address Then
                    newWs.Cells(i, 1).Value = ws.Name
                    newWs.Cells(i, 2).Value = cell.MergeArea.Address
                    newWs.Cells(i, 3).Value = cell.MergeArea.Rows.Count
                    newWs.Cells(i, 4).Value = cell.MergeArea.Columns.Count
                    newWs.Cells(i, 5).Value = cell.MergeArea.Cells(1, 1).Value
                    i = i + 1
                End If
            Next cell
        End If
    Next ws

    ' 列幅を自動調整
    newWs.Columns("A:E").AutoFit
End Sub

Function UniqueWorksheetName(ByVal baseName As String) As String
    Dim ws As Worksheet
    Dim wsName As String
    Dim counter As Integer
    Dim isUnique As Boolean

    wsName = baseName
    isUnique = False
    counter = 1

    Do While Not isUnique
        isUnique = True
        For Each ws In ThisWorkbook.Worksheets
            If ws.Name = wsName Then
                isUnique = False
                wsName = baseName & " (" & counter & ")"
                counter = counter + 1
                Exit For
            End If
        Next ws
    Loop

    UniqueWorksheetName = wsName
End Function

マクロの使い方

まず、ExcelのVBAエディターに上記のコードをコピーして貼り付けます。エディターを開くには、ExcelでAlt + F11キーを押します。次に、挿入メニューから標準モジュールを選択し、新しいモジュールを作成します。そこにコードを貼り付けてください。

コードを貼り付けたら、マクロを実行してみましょう。エクセル上でAlt + F8キーを押してマクロのダイアログボックスを開き、「ListMergedCells」を選択し、「実行」ボタンをクリックします。すると、新しいワークシートが作成され、結合セルの情報がリスト化されます。

サンプル

以下は、マクロを実行した後の「MergedCellsList」ワークシートのサンプルです。

ワークシート結合セル位置縦サイズ横サイズデータ
Sheet1$A$1:$C$223サンプルデータ1
Sheet1$E$4:$F$632サンプルデータ2
Sheet2$B$3:$D$423サンプルデータ3

このマクロを使って、ブック内の結合セルの情報を一覧で確認できます。ただし、拡大倍率の上限は400%までとなっているため、それ以上の拡大はできませんのでご注意ください。

それでは、ぜひこのマクロを活用し、結合セルの管理を効率化してみてください。

コメント