Excel 計算式そのものを表示・取得する方法

Excel マクロ、VBA

スポンサーリンク

はじめに

ご存知の通りExcelでは、中にどんな計算式が入っていても、セルの上に表示されるのはあくまでも答え・結果だけだ。

しかし時として、結果ではなく計算式の方をセル上に表示したい、そしてコピペとかしてみたいということもある。
たくさんのセルに入っている計算式を、いっぺんに俯瞰・チェックしたいとかいう場合だ。

そういう場合の方法について、いくつか述べてみたい。

表示モードを切り替える

まず最有力の方法として、ショートカットキー
Ctrl + Shift + @
でいける。これにより、セルの上に結果ではなく計算式を表示するモードとなってくれる。

もう一回同じショートカットキーを入力すれば、通常どおり結果だけがセルに表示される状態になる。

このモードで、計算式の入ったセルをコピーしてテキストエディタなどに貼り付ければ、内部の数式が貼り付けられてくれる。

ついでに青とか赤の色がついて、計算式がどこのセルを参照しているかということを示してもくれる。まあこれについては、普通に参照元のトレース機能を使えば良いけどね。

リボンの「数式」タブの中に「数式の表示」というコマンドがあって、これでも良いけど、ショートカットキーを覚えた方が良いだろう。

Excel トレース機能①まずは参照「元」のトレースから覚えよう

FORMULATEXT関数(Excel2013以降)

次に、Excel2013以降ならFORMULATEXT関数というのが追加された。使い方は簡単で、たとえば

=FORMULATEXT(E2)
とすればE2セルの内部の計算式を答えとして返してくれる。

R1C1表示形式との関係

Excel 絶対・相対参照の上級編~R1C1参照~

Excel 行・列(縦横)の番号を数字で表示するマクロ 必ず個人用マクロブックに組み込もう

ちなみにだけどExcelでは、横方向(列)の番号はA、B、C、・・・とアルファベットで表示されるけど、これを縦方向(行)同様に数値で表示するR1C1という表示モードがある。

それについてはこちらとかこちらで述べているけど、上記の計算式を表示する技に関してはどうなるか。

まずショートカットキー
Ctrl + Shift + @
による方法の場合は、R1C1表示モードのときにやったなら、表示されるものもR1C1表示形式(縦横とも数値で表示される)になる。まあこれは当然だろう。

それに対しFORMULATEXT関数の場合はどうなるか。
通常表示モード(横方向はアルファベット表示)のときにFORMULATEXT関数を入力すると、FORMULATEXT関数が返す答えも当然ながら通常表示モードになる。
そしてこれは、表示モードをR1C1モードに切り替えても変わらない。

しかし、R1C1表示モードにいったん設定した後でFORMULATEXT関数を入力すれば、そのときの答えはR1C1表示形式の答えになってくれる。

要するに、FORMULATEXT関数が返す答えの表示モードは、先にExcelで設定しておいた表示モードに従うということだ。
まあそんなのを、いちいち試そうなどという人もあまりいないだろうが。

マクロ(VBA)でセルの計算式を取得する

あまり深入りはしないが、マクロ(VBA)でセルの計算式を取得するやり方も一応示しておく。
まず、通常表示モード(横方向はアルファベット)の計算式を取得するならFormulaというのを使う。

FORMULATEXT関数にも使われてるFormulaという単語が、計算式のことね。
英語でFormulaとはどちらかというと、定型句とかいう意味を示すけど、式という意味もあるみたい。

たとえば上記のようなコードを書き実行すると、E2セル~E6セルに入力された計算式が順に、マクロの内部的な場所(イミディエイトウィンドウという)に印字されていく。

ソースの中にあるForって何だよとか、色々と途中を飛ばした説明になっているが、さわりだけの説明にします。

次にR1C1表示モード(縦も横も数値で表示)による計算式を取得するならFormulaR1C1を使う。
さきほどのFormulaの後ろにR1C1を付けただけね。

なんか上図の例では、全部「=RC[-2]*RC[-1]」と同じ式が表示されてるけど、R1C1形式の表示方法の詳細については↓を参照下さい。

Excel 絶対・相対参照の上級編~R1C1参照~

スポンサーリンク