GoogleスプレッドシートやExcelで関数を使って表を作るとき、次のようなことで困った経験はないでしょうか?
- 関数が消えて手入力に置き換わっていた
- 表の一部だけ関数が入っていない
- 関数が入っているかどうかを見た目だけで判断できない
こうした問題をすばやくチェックできるのが、ISFORMULA関数です。
この記事では、ISFORMULA関数の基本から、BYROW・FILTER関数との組み合わせ、さらに関数の入っていないセルの検出方法まで、実務で役立つ使い方を具体的にご紹介します。
※本記事ではGoogleスプレッドシートで検証しています。
ISFORMULA関数とは?
ISFORMULA関数は、指定したセルに関数が入力されているかどうかを判定する関数です。
基本構文は以下のとおりです。
=ISFORMULA(参照セル)
- 関数が入っていれば
TRUE
- 値のみが入力されていれば
FALSE
例:A2に関数、A3が手入力の場合

実例:サンプルデータを使って確認
以下のような売上表を例にします。
商品名 | 単価 | 数量 | 合計金額 |
---|---|---|---|
りんご | 100 | 2 | =B2*C2 |
みかん | 80 | 3 | =B3*C3 |
ぶどう | 150 | 1 | 150 |
もも | 200 | 2 | =B5*C5 |
バナナ | 90 | 5 | =B6*C6 |
3行目(ぶどう)の合計金額だけ、関数が入っておらず、手入力で「150」と入力されています。
ここから手入力の行だけを判定したり、抽出から除外したいと思います!
よくある間違い例:配列に対してISFORMULAを使うパターン
① ARRAYFORMULAでまとめて判定しようとする例(✕NG)
=ARRAYFORMULA(IF(D2:D6="", "", IF(ISFORMULA(D2:D6), "関数あり", "手入力")))
→ ISFORMULA
は複数セルの配列に対応していないため、上記のように範囲を渡すと想定する結果が得られません。
② FILTER関数の条件に直接ISFORMULAを使う例(✕NG)
=FILTER(A2:D6, ISFORMULA(D2:D6))
→ こちらも同様に、ISFORMULA(D2:D6)
が配列として評価できないため、エラーになります。
正しい使い方は次の通りです!
正しい書き方①:BYROW関数で1行ずつ判定
BYROW
関数とLAMBDA
関数を使うと、範囲内の各セルを1つずつ判定できます。
=BYROW(D2:D6, LAMBDA(cell, IF(cell="", "", IF(ISFORMULA(cell), "関数あり", "手入力"))))
この式をE2セルに入力すると、次のような判定が表示されます。

正しい書き方②:関数が入っている行だけを一発で抽出
関数が入っている行だけを抽出したい場合、FILTER関数とBYROW・LAMBDAを組み合わせることで、1つの式で実現できます。
=FILTER(A2:D6, BYROW(D2:D6, LAMBDA(cell, ISFORMULA(cell))))
この式では、D列に対して1行ずつ ISFORMULA
を適用し、TRUE
の行だけが抽出されます。BYROW
では各セルを1つずつ評価しています。


おまけ①:関数が入っているセルの数をカウントする
次の関数を使えば、D2:D6の範囲において関数が入っているセルの個数を数えることができます。
=COUNTIF(BYROW(D2:D6, LAMBDA(cell, ISFORMULA(cell))), TRUE)

逆に、手入力されたセルの数をカウントしたい場合は次のように書けます。
=COUNTIF(BYROW(D2:D6, LAMBDA(cell, NOT(ISFORMULA(cell)))), TRUE)

おまけ②:手入力セルが1つでもあるかどうかをチェックする
列の中に、1つでも手入力のセルがあるかどうかを調べるには、次のように書きます。
=OR(BYROW(D2:D6, LAMBDA(cell, AND(NOT(ISFORMULA(cell)), cell<>""))))

解説
ちょっと複雑なので解説です💦
ISFORMULA(cell)
で関数の有無を確認NOT(...)
で関数がなければTRUEcell<>""
で空白でないかを確認- 両方を
AND(...)
で満たす場合=手入力セル OR(...)
により、1つでも手入力セルがあればTRUEになります
この関数を使えば、関数の削除ミスや手入力の混入を一括で検出できるため、チェックに非常に便利です!
注意点
ISFORMULA関数を使う際の注意点をまとめました。
内容 | 説明 |
---|---|
空白セルはFALSE | 関数がなければ、空白でもFALSEになります |
関数が壊れていてもTRUE | =#REF! のようにエラーでも関数が入っていればTRUEになります |
条件付き書式の関数は対象外 | セル内に直接入っていない関数は対象外です |
実務での活用例
ISFORMULA関数は、以下のような場面で便利です。
- 担当者が関数を削除していないかの確認
- 入力済みのデータがすべて自動計算されているかの検証
- 関数が入っている行だけを抽出して報告用にまとめる
BYROWやFILTER関数と組み合わせることで、より柔軟で効率的なチェックが可能になります。
特に複数人で扱うシートがあるときは用意しておくと間違いに気づきやすいと思います!
まとめ
ISFORMULA関数は、セルに関数が入っているかどうかを判定できる便利な関数です。
関数の削除ミスを防ぎたいときや、自動計算されている箇所を確認したいときに特に効果を発揮します。
手入力との区別がつきにくい表でも、ISFORMULAを使えば一目で見分けることができるので、ぜひ活用してみてください。