(Excel/VBA)数式を文字列化する方法について

エクセルで数式を取り扱うシーンは良くある話ですが、セルに数式を文字列として表記させて他のセルと比較するというニーズが発生しました。

数式を文字列として取り扱う方法をひとしきり試しましたのでまとめておくことにしたいと思います。

<目次>

 

数式を文字列にする関数

まずは標準機能として数式を文字列にする関数があります。それはFORMULATEXT関数です。

方法:=FORMULATEXT(A1)

と記入すれば、A1セルの数式を表示する事ができます。

しかし、この関数が使えるのはExcel2013の場合のみです。

それより前のバージョンについてはこのFORMULATEXT関数を使用できませんので他の方法を考える必要があります。

 

Excel2007/Excel2010の場合(VBA使用)

VBAのFunction機能(自分で関数を作る機能)で数式を文字列化する関数を作ってしまいましょうというのがこのパターンです。

方法:関数を使用するファイルのVBエディタを立ち上げ、標準モジュールを追加して

Function FORMULA_T(f As Range)

FORMULA_T = f.Formula

End Function

と記入します。その後Excelに戻って=FORMULA_T(A1)とすればA1の式が文字列になって表示されます。

 

最も簡単な方法(Excel全バージョン)

最も簡単な方法は「=」を「'(コロン)=」に置き換えることです。

何を言っているかと言うと、Excelでは"="が記入された分の先頭についていると数式と認識されます。同じように先頭に"'(コロン)"がついていると文字列として判別されます。

従って、Ctrl+Hで「=」を'(コロン)=」に変えてしまえば=で始まる式の前に文字列だよという意味を示す'(コロン)=」がつくので、数式が全て文字列になるわけです。

注意点としては文字列として文中で「=」を使っていた場合、これも'(コロン)=」に変わってしまうのでその点だけはくれぐれも注意してくださいね。

(参考)数式をセルに表示

まずは数式をセルに表示するだけの方法です。目視比較が可能です。但し、セルの中身は数式計算の結果になっています。

そのため、この方法ではセルの数式を文字列として取り扱う事は出来ません。

方法:[数式]タブの[ワークシート分析]グループにある[数式の表示]をクリックする。