概要
「この範囲の “数式だけ” を抜き出したい」
「値が混ざっているけど、数式セルだけ別表にしてチェックしたい」
そんなときに使えるのが、ISFORMULA を使った数式セル抽出です。
ISFORMULA は「そのセルに数式が入っているかどうか」を TRUE / FALSE で返す関数で、これを FILTER などと組み合わせると、数式セルだけの一覧を自動で作れます。
ここでは、
- ISFORMULA の基本
- 1列から数式セルだけを抜き出す
- 行ごと「数式行だけ」抜き出す
- FORMULATEXT まで絡めて「数式の中身一覧」を作る
という流れで、初心者向けにかみ砕いて説明します。
ISFORMULA の基本
ISFORMULA とは何をする関数か
ISFORMULA の書式はとてもシンプルです。
=ISFORMULA(参照)
参照したセルに「数式」が入っている場合
→ TRUE(真)
参照したセルが数式でない場合(手入力の数値・文字・空白など)
→ FALSE(偽)
を返します。
大事なポイントは、「エラーかどうか」は関係なく、
中身が数式なら TRUE、ただの値なら FALSE という割り切りです。
例:A2 にそれぞれ以下のように入っているとします。
=1/0(結果は #DIV/0! エラー)=ISFORMULA(A2)→ TRUE(数式だから)
100(手入力の数値)=ISFORMULA(A2)→ FALSE
#DIV/0!を値として手入力=ISFORMULA(A2)→ FALSE
見た目の結果ではなく、“式が入っているかどうか” だけを見ている、というイメージを持ってください。
数式セルだけを TRUE / FALSE で判定する
判定列を作ってから抽出する考え方
まずは、どのセルが数式かを判定する列を作るところから始めると分かりやすいです。
たとえば、B列に値と数式が混ざっているとします。
C列を「数式判定列」としてこう書きます。
C2: =ISFORMULA(B2)
これを下までコピーすると、
- B2 が数式 → C2 は TRUE
- B2 が値や空白 → C2 は FALSE
というフラグが立ちます。
この「TRUE の行だけ抽出する」というのが「数式セルのみ抽出」の基本発想です。
手動フィルターでもいいですし、FILTER 関数を使えば自動で別表にすることもできます。
1列から「数式セルだけ」を抽出する
FILTER × ISFORMULA の基本パターン
動的配列対応の Excel(Microsoft 365 など)なら、
FILTER と ISFORMULA の組み合わせで「数式セルのみ」を一瞬で抽出できます。
例:A2:A20 の中から、数式が入っているセルだけを縦に抜き出したい場合。
別のセル(たとえば C2)に次のように書きます。
=FILTER(A2:A20, ISFORMULA(A2:A20))
動きとしては、
- ISFORMULA(A2:A20) が TRUE の行だけ
- A2:A20 の値を抽出
というイメージです。
これで「数式セルだけがぎゅっと詰まったリスト」ができます。
行ごと「数式行だけ」を抽出する
“結果列に数式が入っている行” を丸ごと抜き出す
たとえば、A〜C列が元データ、D列が計算結果(数式)だとします。
「D列に数式が入っている行だけ、A〜D列ごと別表にしたい」場合の例です。
別セル(たとえば F2)に次の式を書きます。
=FILTER(A2:D20, ISFORMULA(D2:D20))
こうすると、
- D列が数式の行 → A〜D列を丸ごと抽出
- D列が値だけ(コピペ上書きなど)の行 → 抽出されない
という結果になります。
数式が入っている行だけを対象にチェックしたいときや、
「手入力で上書きされた行を見つけたい」ときに便利なパターンです。
数式セルの「式そのもの」を一覧抽出する
FILTER × ISFORMULA × FORMULATEXT の三段技
「数式セルだけを抽出」だけでなく、
「数式の中身(=A2*1.1 など)を一覧表示したい」こともあります。
このときは FORMULATEXT を組み合わせます。
例:A列にいろいろな数式・値が混ざっていて、
「A列の “数式だけ” の中身を一覧にしたい」場合。
次のような式が使えます。
=FILTER(FORMULATEXT(A2:A20), ISFORMULA(A2:A20))
- FORMULATEXT(A2:A20) で「数式の文字列の一覧」を作り
- ISFORMULA(A2:A20) で「数式セルかどうか」を判定し
- FILTER で「数式セルの式だけ」を抽出
という流れです。
これで、=A2*1.1=B5+C5
といった形で「式そのものリスト」が自動でできます。
数式レビュー・監査・教材作り・マニュアル用などで非常に重宝するテクニックです。
例題
問題1
B2:B20 に値と数式が混在しています。
この中から「数式が入っているセルだけ」を縦に抜き出して一覧にしたいです。
C2 に書く FILTER × ISFORMULA の式を書いてください。
=FILTER(B2:B20, ISFORMULA(B2:B20))
問題2
A〜D列に表があり、D列には計算結果が入っています。
D列が数式の行だけを、A〜D列ごと別表に抽出したいです。
E2 に書く式を書いてください。
=FILTER(A2:D20, ISFORMULA(D2:D20))
問題3
A列に数式や値が混ざっています。
A列のうち「数式が入っているセルの “数式そのもの”」だけを一覧表示したいです。
B2 に書く FILTER × ISFORMULA × FORMULATEXT の式を書いてください。
=FILTER(FORMULATEXT(A2:A20), ISFORMULA(A2:A20))
問題4
B2:B100 のうち、数式が入っているセルだけを C列にコピーしたいです。
C2 に書く FILTER × ISFORMULA の式を書いてください(値ではなく “結果” をそのまま抽出すればOKとします)。
=FILTER(B2:B100, ISFORMULA(B2:B100))
問題5
A2:A20 に数式や値が混在しています。
この範囲で「数式セルの数」を数えたうえで、
数式セルが 1 つ以上あれば「数式あり」、1 つもなければ「数式なし」と表示したいです。
B1 に書く式を書いてください(ヒント:ISFORMULA と SUMPRODUCT)。
=IF(SUMPRODUCT(--ISFORMULA(A2:A20))>0, "数式あり", "数式なし")
まとめ
「数式セルのみ抽出 → ISFORMULA」は、
- どこに数式が入っているかを機械的に判定し
- FILTER などと組み合わせて「数式だけの世界」を作る
ためのテクニックです。
型としては、まずこの 2 つを押さえておけば十分です。
=ISFORMULA(セル) ' そのセルが数式かどうか
=FILTER(範囲, ISFORMULA(判定範囲)) ' 数式セルだけ抽出
さらに
=FILTER(FORMULATEXT(範囲), ISFORMULA(範囲))
まで使えるようになると、
「数式の中身一覧」「数式レビュー専用リスト」も自動で作れるようになります。
数式と値が混ざっていてモヤモヤしている表があれば、
一度 ISFORMULA で “数式だけ” を抜き出して眺めてみてください。
壊れているところ・ズレているところが、かなり見つけやすくなります。
