🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのFORMULATEXT & ISFORMULA — セル内の数式を読み取り、監査する

|

ExcelのFORMULATEXT & ISFORMULA — セル内の数式を読み取り、監査する

要点FORMULATEXT(reference) はセルの数式をテキストとして返し (結果ではなく、=… という文字列そのもの)、ISFORMULA(reference) はセルが そもそも数式を保持しているかどうかを TRUE/FALSE で返します。どちらも 計算はしません——検査するのです。役目はシートの監査・ドキュメント化・ エラー防止であって、数値を生み出すことではありません。誰もがつまずくたった1つの ルール:これらはセル参照に向けて使い、その参照先が数式でなければ、 FORMULATEXT は #N/A を返します。

=FORMULATEXT(C2)                          ' C2 に入っている数式のテキストを表示
=ISFORMULA(C2)                            ' C2 が数式なら TRUE、入力値なら FALSE
=IF(ISFORMULA(C2), FORMULATEXT(C2), "—")  ' 安全な組み合わせ:先に確認してから読む

ほとんどすべての Excel 関数は「これは何に計算されるか?」に答えます。この2つは別の 問いに答えます:「このセルの中には実際に何があるか?」。だからこそ、モデルが正しく 見えるのにそれを証明する必要があるとき——ある数値がどう導かれたかを記録するとき、 あるいは誰かが生きた数式の上に 1450 と打ち込んだ1つのセルを探すとき——手を伸ばす 道具になります。

この記事でわかること

  • 考え方の軸:これらは**内省(イントロスペクション)**の関数——計算ではなくシートを読む
  • FORMULATEXT の主な仕事:数式と結果を並べて見せる自己文書化テーブル
  • FORMULATEXT が #N/A を返す理由と、それを直す ISFORMULA のガード
  • ISFORMULA の切り札:すべての数式セルを強調表示する条件付き書式ルール
  • 数式の表示(Ctrl+`)に勝る場面——そして勝らない場面

考え方の軸:計算せずに検査する

通常、セルはその数式の結果を見せます。C21,240 と表示し、それを生んだ =B2*1.08 はその数値の裏に隠れています。FORMULATEXT は隠れているものを表に引き出し ます——数式の元のテキストを、表示・印刷・分解できるただの文字列として返すのです:

=FORMULATEXT(C2)     ' テキスト  =B2*1.08  を返す

ISFORMULA は同じ問いの Yes/No 版に答えます——ここに数式があるのか、それとも単に 打ち込まれた値なのか?——そして TRUEFALSE を返します。

この枠組みを覚えておいてください:どちらの関数も別のセルへの参照を取り、そこに何が あるかを報告します。実行すべき計算を渡しているのではありません。だから =FORMULATEXT(1+1) は無意味です——検査すべきセルがないのです。これらは場所の中身を 読み取り、数式を実行すべきロジックではなく、調べるべきテキストとして扱います。

FORMULATEXT の本当の仕事:自己文書化テーブル

FORMULATEXT のいちばんの使いどころは、数式とその結果を横並びに置くことです。 チュートリアル、監査用ワークシート、「これはどう計算したのか?」というドキュメント—— 読み手に答えと仕組みの両方を見せたいときならいつでも:

' C列が計算し、D列がその方法を自動的に示す
C2:  =B2*1.08
D2:  =FORMULATEXT(C2)     ' 表示: =B2*1.08

D2 は C2 の数式を読んでいるので、C2 を編集しても正しいままです——税率を変えれば、 ドキュメント列も自ら更新されます。これが数式を手作業でテキストのラベルとして打ち込む ことに対する利点です:手打ちのラベルは、誰かが本物の数式を編集した瞬間に古くなります。 FORMULATEXT はセルの実際の中身について嘘をつくことがありません。

#N/A の罠と、ISFORMULA のガード

「FORMULATEXT が壊れている」というあらゆる疑問の裏にある事実がこれです:参照先のセルが 数式でない場合——打ち込まれた数値、テキスト、または空のセル——FORMULATEXT は空白 ではなく #N/A を返します:

=FORMULATEXT(A2)     ' A2 には入力値 1450 が入っている  ->  #N/A
=FORMULATEXT(A3)     ' A3 は空                          ->  #N/A

だから列全体をこれで無造作に埋めることはできません——定数のセルが #N/A を至るところに 散らかします。これこそ ISFORMULA の出番です。読み取りをチェックでガードすれば、混在 したデータでもきれいな出力が得られます:

=IF(ISFORMULA(C2), FORMULATEXT(C2), "(constant)")

こう読みます:C2 が数式ならそのテキストを表示し、そうでなければ定数だと示す。 IFERROR でも #N/A を飲み込めますが、ISFORMULA は意図を率直に述べます——数式と ハードコードされた値を区別しているのであり、それこそが監査の目的そのものです。 「数式」と「定数」の違いこそが本当に気にかけていることなら、IFERROR より IF + ISFORMULA に手を伸ばしましょう。

ISFORMULA の切り札:すべての数式セルを強調表示する

単体で見ると、ISFORMULA は重要とは思えないほど単純に見えます。その力は条件付き書式 ルールで発揮されます。セルごとの1つの TRUE/FALSE は、まさにこの機能が求めるもの だからです。

データを選択し、*「数式を使用して、書式設定するセルを決定」*の種類のルールを追加して、 次を入力します:

=ISFORMULA(A1)

数式を含むすべてのセルが点灯し、ハードコードされた値はそのままです。ひと目で、財務 モデルのどの数値が生きていて、どれが手作業で上書きされたかが分かります——モデル が静かに壊れる典型は、誰かが数式の上に値を貼り付けることですが、これがそれを即座に 可視化します。これは存在しうる最も安上がりなモデル整合性チェックであり、シートの変化に 合わせて自動で更新されます。

FORMULATEXT と数式の表示(Ctrl+`)の比較

Excel には数式を見るための組み込みの方法がすでにあります:[数式] タブの数式の表示、 または Ctrl+`` ショートカットで、シート全体を結果ではなく数式の表示に切り替えます。 では、いつ FORMULATEXT が必要になるのでしょうか?

  • 数式の表示一時的で、シート全体のビューです——さっと見渡すには最適ですが、 オフに切り替えた瞬間に消えます。参照・フィルター・結果と並べての印刷ができるセルに 数式のテキストを入れてはくれません。
  • FORMULATEXT恒久的で、セル単位です——1つのセルの数式を独立したセルに固定 するので、それをドキュメント化したり、2つのバージョンを比較したり、 SEARCH/テキスト関数に渡したり、ブックと一緒に移動する 監査列を作ったりできます。

経験則:さっと見たい → Ctrl+`` 。ドキュメント、監査証跡、あるいはシートに残るべき 比較を作る → FORMULATEXT。

バージョンについて1点:どちらの関数も Excel 2013 で登場しました。最新のすべての バージョンと Microsoft 365 に存在しますが、Excel 2010 以前では数式の表示か VBA の ヘルパーに戻ることになります。

判断のポイント

FORMULATEXT と ISFORMULA が、あなたが出荷する数式に現れることはほぼありません—— これらは答えを計算せず、答えがどう組み立てられているかを記述します。それが狙いです。 IS関数と並べて、監査とドキュメントの引き出しに入れて おきましょう:値が正しく見えるのに確証が欲しいとき、これらは「私を信じて」を 「これが証拠です」に変えます。FORMULATEXT はモデルに自らを説明させるために、ISFORMULA はその読み取りをガードするために(そしてハードコードの上書きが隠れられないように モデルを塗り分けるために)使います。FORMULATEXT からの #N/A はバグではなくメッセージ ——そのセルは定数だ——と捉えれば、あなたはすでに、慎重な分析者と同じ使い方をして います。

ExcelMaster の使いどころ

ブックを手作業で監査するのは遅いものです:セルを1つずつクリックして数式バーを読み、 上書きされた1つを見つけようとします。ExcelMaster はそれを一度で行います—— 「数式が入力値に置き換えられたセルをすべて印して」や「各合計がどう計算されているかを 示す列を追加して」と頼めば、ISFORMULA ベースの条件付き書式や FORMULATEXT の ドキュメント列を、混在データでもきれいなままになるよう #N/A からガードしたうえで 作ります。モデルが変わっても自らの正直さを保つ監査証跡が手に入ります。

よくある質問

ExcelのFORMULATEXT関数は何をしますか?

=FORMULATEXT(reference) は、参照先のセルの数式をテキスト文字列として返します—— たとえば、その数式が生む値ではなく =B2*1.08 を表示します。数式そのものを結果の隣に 表示することで、シートをドキュメント化・監査するために使います。セルが数式でなければ #N/A を返します。

FORMULATEXT が #N/A を返すのはなぜですか?

向けたセルに数式が入っていないからです——打ち込まれた数値、テキスト、または空です。 FORMULATEXT は、対象が実際の数式であるときにだけ返すものを持ちます。 =IF(ISFORMULA(A2), FORMULATEXT(A2), "constant") でガードすれば、定数のセルはエラー ではなくラベルを表示します。

ISFORMULA関数は何に使いますか?

=ISFORMULA(reference) は、セルが数式を含めば TRUE、そうでなければ FALSE を返し ます。いちばんの使いどころは条件付き書式ルールの中です——=ISFORMULA(A1) と入力 すると、すべての数式セルが強調表示され、モデルのどの値が生きていて、どれが手打ちされた かが一目瞭然になります。

ワークシートのすべての数式をテキストとして表示できますか?

シート全体をさっと一時的に見るには、Ctrl+`` (数式の表示)を押すか、[数式] → [数式の表示] を使います。特定の数式をセルに恒久的に固定する——ドキュメント、印刷、比較の ために——には、代わりに隣接する列で FORMULATEXT を使います。

FORMULATEXT と ISFORMULA は Excel 2016 で使えますか?

はい。どちらも Excel 2013 で導入され、Excel 2016、2019、2021、Microsoft 365 に 存在します。ないのは Excel 2010 以前だけで、その場合は数式の表示か小さな VBA 関数が 代替になります。

検証環境

検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-09。

関連ガイド: ExcelのIS関数 · ExcelのCELL関数 · ExcelのTYPE & N関数 · ExcelのIF関数