Excel VBAで数式セルを一覧表示しよう
Excelのシートには、たくさんのセルがあり、複雑な数式が入っていることがよくあります。そんな時、数式セルの位置や内容を一覧で確認できると便利ですよね。今回は、Excel VBAを使って、ブック内に存在する「数式セルの位置、その数式、その結果」をリスト化して新しいワークシートに表示する方法を紹介します。
このVBAコードの機能と使い方
このVBAコードは、ブック内のすべてのワークシートを対象に、数式が入力されているセルを検索し、そのセルのワークシート名、セルアドレス、数式、数式の結果を新しいワークシート「Formula List」に一覧表示します。
使い方は以下の通りです。
- ExcelでVBAエディターを開きます(Alt + F11キー)。
- 「挿入」メニューから「標準モジュール」を選択し、新しいモジュールを作成します。
- 作成したモジュールに以下のVBAコードを貼り付けます。
Sub ListFormulas()
Dim ws As Worksheet, newWs As Worksheet
Dim rCell As Range, rUsed As Range
Dim i As Long
' 「Formula List」ワークシートが既に存在する場合、エラーメッセージを表示し、マクロの実行を中止する
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Formula List")
On Error GoTo 0
If Not ws Is Nothing Then
MsgBox "既存の「Formula List」を削除するか別名に変更してください。", vbExclamation, "エラー"
Exit Sub
End If
' 新しいワークシートを作成
Set newWs = ThisWorkbook.Worksheets.Add
newWs.Name = "Formula List"
' ヘッダーを設定
newWs.Cells(1, 1).Value = "ワークシート"
newWs.Cells(1, 2).Value = "セルアドレス"
newWs.Cells(1, 3).Value = "数式"
newWs.Cells(1, 4).Value = "結果"
i = 2
' すべてのワークシートをループ
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> newWs.Name Then
Set rUsed = ws.UsedRange
' 数式があるセルをループ
For Each rCell In rUsed.Cells
If rCell.HasFormula Then
' 数式があるセルの情報を新しいワークシートに書き込む
newWs.Cells(i, 1).Value = ws.Name
newWs.Cells(i, 2).Value = rCell.Address
newWs.Cells(i, 3).Value = "'" & rCell.Formula
newWs.Cells(i, 4).Value = rCell.Value
i = i + 1
End If
Next rCell
End If
Next ws
End Sub
- 「実行」メニューから「実行」または「F5キー」を押して、マクロを実行します。
- マクロが実行され、新しいワークシート「Formula List」が作成され、数式セルの情報が一覧表示されます。
注意点
すでに「Formula List」という名前のワークシートが存在する場合、エラーメッセージが表示され、マクロの実行が中止されます。その場合は、既存の「Formula List」ワークシートを削除するか別名に変更してから、再度マクロを実行してください。
まとめ
今回のVBAコードを使用することで、数式セルの位置や内容を一覧で確認することができます。これにより、ブック内の数式の管理や、誤った数式の見つけ出しが容易になります。ぜひお試しください。
コメント