• 作成日 : 2025年8月25日

FORMULATEXT関数の使い方:セルの数式を文字列として表示する方法

FORMULATEXT関数は、指定したセルに入力されている数式を文字列として表示する関数です。ワークシートの文書化、数式の監査、エラーチェック、教育資料の作成など、数式の内容を可視化して管理する場面で活用されます。例えば、複雑な財務モデルの数式を一覧化したり、数式のエラーを特定したり、エクセルの使い方を説明する資料を作成したりできます。本記事では、FORMULATEXT関数の基本的な使い方から実践的な活用方法、他の関数との効果的な組み合わせまで、初心者の方にもわかりやすく紹介します。

FORMULATEXT関数とは

FORMULATEXT関数は、セルに入力されている数式を文字列として取得する情報関数です。Excel 2013で導入されたこの関数により、通常は数式バーでしか確認できない数式の内容を、ワークシート上に表示できるようになりました。

この関数の重要な特徴は、数式の結果ではなく、数式そのものを文字列として返すことです。これにより、ワークシートの構造を文書化したり、複雑な数式を分析したり、他の人に数式の動作を説明したりすることが容易になります。

FORMULATEXT関数の基本的な使い方

関数の構文を理解する

FORMULATEXT関数の構文は非常にシンプルです。

=FORMULATEXT(参照)

参照には、数式を取得したいセルを指定します。

基本的な使用例

実際の使用例を見てみましょう。

A1セルに「=B1+C1」という数式が入力されている場合:

=FORMULATEXT(A1)

この結果は「=B1+C1」という文字列になります。

より複雑な数式の例:

=FORMULATEXT(A2)  ‘ A2に =VLOOKUP(D2,表1,2,FALSE) がある場合

結果は「=VLOOKUP(D2,表1,2,FALSE)」となります。

数式でないセルの場合

値が入力されているセルを参照した場合:

=FORMULATEXT(A3)  ‘ A3に「100」という値がある場合

この場合、#N/Aエラーが返されます。

FORMULATEXT関数の実践的な利用シーン

ワークシートの文書化

複雑な財務モデルや分析シートでは、使用されている数式を文書化することが重要です。FORMULATEXT関数を使って、主要な計算式を別シートに一覧表示することで、モデルの構造を明確に記録できます。

監査や引き継ぎの際に、数式の一覧があることで、ワークシートの理解が格段に早くなります。また、数式の変更履歴を記録する際にも、変更前の数式を文字列として保存できます。

数式のエラーチェック

大規模なワークシートでは、数式の一貫性を保つことが課題となります。FORMULATEXT関数で数式を文字列化し、文字列関数で分析することで、参照範囲の不整合や関数の使用ミスを発見できます。

例えば、本来すべて同じパターンであるべき数式が、一部だけ異なる参照をしている場合、その差異を自動的に検出できます。

教育・トレーニング資料の作成

エクセルの使い方を教える際、数式とその結果を並べて表示することで、学習効果が高まります。FORMULATEXT関数を使えば、動的に更新される教材を作成でき、数式を変更すると自動的に表示も更新されます。

関数の使い方を説明する際に、実際の数式と計算結果を同時に見せることで、理解しやすい教材となります。

FORMULATEXT関数の応用テクニック

数式の一覧作成

ワークシート内のすべての数式を抽出:

=IFERROR(FORMULATEXT(A1), “”)

各セルに適用して、数式のみを表示します。

数式の比較

異なるセルの数式が同じかチェック:

=IF(FORMULATEXT(A1)=FORMULATEXT(B1), “同じ”, “異なる”)

数式内の特定関数の検出

VLOOKUP関数を使用しているセルを特定:

=IF(ISNUMBER(SEARCH(“VLOOKUP”, FORMULATEXT(A1))), “VLOOKUP使用”, “”)

よくあるエラーと対策

#N/Aエラーへの対処

数式が入力されていないセルを参照した場合に発生します。

基本的なエラー処理:

=IFERROR(FORMULATEXT(A1), “数式なし”)

詳細な判定を含む処理:

=IF(ISFORMULA(A1), FORMULATEXT(A1),

IF(ISBLANK(A1), “空白セル”, “値: ” & A1))

FORMULATEXT関数は数式が存在しない場合に#N/Aエラーを返すため、IFERROR関数やISFORMULA関数と組み合わせて使用することが一般的です。これにより、セルの内容に応じた適切な表示が可能になります。特に、大量のセルを処理する場合は、エラー処理が必須です。

循環参照の問題

自己参照を含む場合の注意:

=IF(A1=FORMULATEXT(A1), “循環参照の可能性”, FORMULATEXT(A1))

保護されたセルでの動作:

=IFERROR(FORMULATEXT(A1), “数式なしまたは保護されています”)

FORMULATEXT関数自体が循環参照を作ることは稀ですが、取得した数式文字列を評価しようとすると問題が発生する可能性があります。また、シートが保護されていても、セルが「数式を表示しない (Hidden)」に設定されていなければ FORMULATEXT 関数は動作しますが、数式が非表示に設定されている場合は #N/A エラーを返します。保護状態とセルの表示設定によって挙動が変わる点に注意してください。

配列数式での使用

配列数式の表示に関する制限:

=IF(ISERROR(FORMULATEXT(A1)), “配列数式または値”,

FORMULATEXT(A1))

スピル範囲での処理:

=FORMULATEXT(A1#)  ‘ Excel 365のスピル範囲

従来の配列数式(Ctrl+Shift+Enter)は、FORMULATEXT関数で正しく表示されないことがあります。Excel 365の動的配列では、スピル範囲の最初のセルの数式のみが表示されます。配列数式を文書化する際は、この制限を理解しておく必要があります。

長い数式の表示

セル幅を超える数式の処理:

=LEFT(FORMULATEXT(A1), 50) & IF(LEN(FORMULATEXT(A1))>50, “…”, “”)

改行を含む表示:

=SUBSTITUTE(FORMULATEXT(A1), “,”, “,” & CHAR (10))

複雑な数式は非常に長くなることがあり、セルに収まらない場合があります。適切に切り詰めたり、改行を挿入することで、読みやすい表示が可能になります。印刷時の考慮も重要です。

FORMULATEXT関数と他の関数との組み合わせ

ISFORMULA関数での事前チェック

数式の存在を確認してから表示:

=IF(ISFORMULA(A1), “数式: ” & FORMULATEXT(A1), “値: ” & TEXT(A1, “@”))

=IF(ISFORMULA(A1), FORMULATEXT(A1), IF(ISBLANK(A1), “(空白)”, TEXT(A1, “@”)))

ISFORMULA関数で事前にチェックすることで、エラーを回避しつつ、セルの内容を適切に表示できます。この組み合わせは、ワークシートの構造を完全に文書化する際の標準的なパターンです。値と数式を明確に区別して表示することで、ワークシートの理解が容易になります。

LEN関数での数式の長さ確認

数式の複雑さを定量化:

=LEN(FORMULATEXT(A1)) & “文字”

=IF(LEN(FORMULATEXT(A1))>100, “複雑な数式”, “シンプルな数式”)

数式の長さは複雑さの指標となります。メンテナンス性の観点から、過度に長い数式は分割することを検討すべきです。組織内で数式の長さの上限を設定し、それを超える場合は警告を表示するような仕組みも構築できます。

SEARCH/FIND関数での数式分析

特定のセル参照を含む数式を検出:

=IF(ISNUMBER(SEARCH(“$A$1”, FORMULATEXT(B1))), “A1を参照”, “”)

B1 セルに =FORMULATEXT(A1:A10) と入力(スピルで B1:B10 に展開)

=COUNTIF(B1#,”*VLOOKUP*”)

数式内で使用されている参照や関数を分析することで、依存関係を把握できます。特定のセルを参照している数式をすべて特定したり、非推奨の関数(VLOOKUP→XLOOKUP)を使用している箇所を発見したりできます。

SUBSTITUTE関数での数式の加工

数式内の参照を一括変更:

=SUBSTITUTE(FORMULATEXT(A1), “Sheet1”, “Sheet2″)

=”変更後: ” & SUBSTITUTE(FORMULATEXT(A1), “$A$1”, “$B$1”)

数式を文字列として扱うことで、一括置換が可能になります。ただし、実際の数式を変更するには、VBAや手動での対応が必要です。この手法は、数式の変更シミュレーションや、移行計画の立案に有用です。

TEXT関数での書式設定

数式と結果を整形して表示:

=”数式: ” & FORMULATEXT(A1) & ” → 結果: ” & TEXT(A1, “#,##0.00″)

=FORMULATEXT(A1) & ” = ” & IF(ISERROR(A1), “エラー”, TEXT(A1, “General”))

教育資料や文書化において、数式とその結果を見やすく表示できます。エラー処理も含めることで、あらゆる状況に対応した表示が可能です。プレゼンテーション資料の作成時に特に有効です。

INDIRECT関数での動的参照

取得した数式文字列から参照先を抽出:

セル A1 が 単純な範囲式(例 =B1:C10)の場合は、コロン以降も含めて全文字を取得するように修正します。

=INDIRECT(MID(FORMULATEXT(A1), 2, LEN(FORMULATEXT(A1))-1))

セル A1 が 関数付きの数式(例 =SUM(B1:C10))で、括弧内の範囲を取り出して参照したい場合は LET 関数を使うと安全です。

=LET(

f,  FORMULATEXT(A1),   /* 数式文字列 */

r,  MID(f, FIND(“(“,f)+1, FIND(“)”,f)-FIND(“(“,f)-1),   /* 括弧内を抽出 */

INDIRECT(r))

※複雑なネスト式では括弧の位置判定をさらに精緻化するか、VBA/Power Query 等の利用を検討してください。

高度な使用例ですが、数式から参照範囲を抽出し、その範囲を動的に利用することができます。ただし、複雑な数式では正確な抽出が困難なため、単純な参照であれば、使用が適しています。

FORMULATEXT関数を活用しよう

FORMULATEXT関数は、エクセルの数式を可視化し、文書化するために有効な関数の一つです。ワークシートの監査、エラーチェック、教育資料の作成など、数式の透明性が求められる様々な場面で活用できます。

ISFORMULA関数との組み合わせにより、エラーを回避しながら包括的な数式管理が可能になります。文字列関数と組み合わせることで、数式の分析や依存関係の把握も実現できます。

Excel 2013以降でのみ使用可能という制限はありますが、シート管理で役立つ関数のひとつです。ぜひ実務でFORMULATEXT関数を活用し、より透明性の高い、保守しやすいワークシートを作成してください。数式の可視化は、チームでの共有や品質管理に役立ちます。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事