要点 —
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+`)に勝る場面——そして勝らない場面
考え方の軸:計算せずに検査する
通常、セルはその数式の結果を見せます。C2 は 1,240 と表示し、それを生んだ
=B2*1.08 はその数値の裏に隠れています。FORMULATEXT は隠れているものを表に引き出し
ます——数式の元のテキストを、表示・印刷・分解できるただの文字列として返すのです:
=FORMULATEXT(C2) ' テキスト =B2*1.08 を返す
ISFORMULA は同じ問いの Yes/No 版に答えます——ここに数式があるのか、それとも単に
打ち込まれた値なのか?——そして TRUE か FALSE を返します。
この枠組みを覚えておいてください:どちらの関数も別のセルへの参照を取り、そこに何が
あるかを報告します。実行すべき計算を渡しているのではありません。だから
=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関数
