Excelシートで数式を使用しているセルを検索したいとき、通常の検索では「数式の結果(値)」しか見つかりません。
しかし、VBAを使えば「セルに含まれる数式そのもの(たとえば =SUM(A1:A5) など)」を検索することが可能です。
本記事では、数式の一部をキーワードとして検索し、該当セルの位置を特定する方法をご紹介いたします。
目次
想定する用途と目的
- 「SUM」や「VLOOKUP」など特定の関数を使用しているセルを抽出したい。
 - 数値結果ではなく、数式の内容を元に検索したい。
 - シート内の複雑な数式構造を把握・レビューしたい。
 
VBAコードの例
以下のコードでは、アクティブシート全体から「AVERAGE」というキーワードを含む数式を検索し、最初に見つかったセルのアドレスを表示します。
Sub SearchFormulaText()
    Dim foundCell As Range
    Set foundCell = Cells.Find( _
        what:="AVERAGE", _
        LookIn:=xlFormulas, _
        LookAt:=xlPart)
    If foundCell Is Nothing Then
        MsgBox "指定されたキーワードを含む数式は見つかりませんでした。", vbInformation
    Else
        MsgBox "該当セル:" & foundCell.Address, vbInformation
    End If
End Sub
各パラメータの解説
| パラメータ名 | 説明 | 
|---|---|
what | 検索する文字列(数式の中に含まれるキーワード) | 
LookIn:=xlFormulas | 数式そのものを検索対象にする設定。これがないと数式の結果が検索対象になります。 | 
LookAt:=xlPart | キーワードが数式の一部に含まれていればヒット(完全一致にするには xlWhole を指定) | 
応用例
- 「IFERROR」を含むすべてのセルを見つけて修正対象にする。
 - 「INDIRECT」や「OFFSET」などの動的参照関数を使っている箇所だけ抽出。
 - ワークシート全体の関数使用状況を確認・可視化。
 
まとめ
Excel VBAでは、Findメソッドを使って「数式そのもの」を検索することが可能です。
この方法を使えば、数式の構造を可視化したり、特定の関数を含むセルだけを抽出したりといった、より高度なデータ分析や検証作業が効率的に行えます。
関数の見直しやトラブルシューティング時にも活用できる便利なテクニックですので、ぜひ実務に取り入れてみてください。
