VBAで数式が設定されているセルを高速で探す

Excelで数式が設定されているセルを探すには

数式が設定されているセルは「=SUM(A1:A10)」のように必ず「=」から始まります。

そのため、Excelの検索ダイアログで「検索する文字列」に「=」を入力して検索を行うと数式セルを探すことは出来ます。

ただし、文章などの一部として「=」が設定されているセルも検索対象となってしまいます。

結果として、検索ダイアログを使った場合では1セルずつ数式かどうかの判別しながら対応が必要になるため、時間が掛かることになります。

VBAで数式セルかどうかを判定する方法

VBAを使って数式セルを探す場合、基本的にはセルの数式を表すRangeオブジェクトのFormulaプロパティを利用します。

ただ、Formulaプロパティだけでは本当に関数などの数式かどうかは判定できません。なぜかというと、セルの表示形式によって数式ではない場合があるからです。

セルの表示形式が文字列の場合はFormulaプロパティで取得した値は数式のように見えますが実際には文字列です。そのためFormulaプロパティとセルの値であるValueプロパティの値は同じになります。

それらを考慮すると、Formulaプロパティの一番左の文字が「=」の場合で、かつ、Valueプロパティと異なる場合は数式とみなすことが出来ます。

数式が設定されているセルを探すコード

アクティブシートで利用されているセル範囲を1セルずつループして、Formulaプロパティの一番左が「=」で、かつ、Valueプロパティと不一致の場合は数式セルとみなしています。

9行目のActiveSheet.UsedRangeはシートで利用されているセル範囲を指します。そのため不要なセルを検索しないため高速に処理が行われます。

イミディエイトウィンドウとメッセージボックスの2通りで出力していますが、イミディエイトウィンドウだけでいい場合はメッセージボックスの出力はコメントアウトするなどで編集してください。

使い方

数式を検索したいシートをアクティブにして、上のSearchFomula関数を実行します。

実行後、VBA画面のイミディエイトウィンドウとメッセージボックスに数式セルの座標が出力されます。

結合セルに数式が設定されている場合は、結合セルの中で一番左上のセルの座標が出力されます。

関連記事

サブコンテンツ

このページの先頭へ