概要
「この列、どこか1つでもエラーがあるか知りたい」
「たくさんの計算列の中から、エラーが出ている列だけを見つけたい」
こういうときに使えるのが ISERROR 関数です。
ISERROR は
「そのセルはエラーかどうか?」
を TRUE / FALSE で判定します。
これを列全体に使えば、
「どの行がエラーか」「この列はエラーを含んでいるか」を検出できます。
ここでは、「エラー列を検出」というテーマに絞って、
ISERROR の使い方を初心者向けにかみ砕いて解説します。
ISERROR の基本
ISERROR の書式と意味
基本形はとてもシンプルです。
=ISERROR(値)
「値」のところにセル参照や計算式を入れると、その結果が
- 何らかのエラー(#N/A, #VALUE!, #REF!, #DIV/0!, #NAME?, #NUM! など)なら → TRUE
- 正常な値(数値・文字列・空白など)なら → FALSE
となります。
例:
=ISERROR(1/0) ' → TRUE(#DIV/0! になる式)
=ISERROR(VLOOKUP(A2,$D$2:$E$10,2,FALSE)) ' 見つからなければ TRUE
=ISERROR(100) ' → FALSE
=ISERROR("ABC") ' → FALSE
エラーかどうかを「はい/いいえ」で返してくれる“判定用スイッチ”だと思ってください。
行ごとのエラー判定から「エラー列」を把握する
各行がエラーかどうかフラグを立てる
まずは、ある列について「どの行がエラーか」をフラグ化してみます。
たとえば、B列にたくさんの計算式が入っているとします。
その右隣、C2 に次のように書きます。
=ISERROR(B2)
これを下にコピーすると、
- B2 がエラー → C2 が TRUE
- B2 が正常 → C2 が FALSE
となり、B列のどの行がエラーか一目で分かるようになります。
この「TRUE が1つでもある列」は、「エラーを含んでいる列」だ、と判断できます。
エラー列かどうかをひと目で分かるようにする
TRUE を「エラーあり」「正常」に言い換える
TRUE / FALSE のままだと分かりづらい場合は、IF と組み合わせます。
=IF(ISERROR(B2), "エラーあり", "正常")
これで、
- B2 がエラー → 「エラーあり」
- B2 が正常 → 「正常」
と表示されます。
列全体にこの判定列を作ることで、
「どの行でどの列がエラーを起こしているか」を一覧で確認しやすくなります。
列単位で「この列にエラーが1つでもあるか」をチェックする
COUNTIF と組み合わせて、エラー列を検出する
「B列のどこか1つでもエラーがあるか?」をまとめて判定したいときは、
ISERROR と COUNTIF(または SUMPRODUCT)を組み合わせる方法があります。
例えば、B2:B100 を対象にして
=COUNTIF(B2:B100,"#N/A")
のように特定エラーを数える方法もありますが、
「全エラーをまとめて判定したい」なら、ISERROR を使った配列的な書き方が便利です。
代表的な例:
=SUMPRODUCT(--ISERROR(B2:B100))>0
この式の意味は、「B2:B100 の中でエラーの個数が1個以上あるか?」です。
ISERROR(B2:B100)
→ 範囲内の各セルについて TRUE/FALSE の配列を返す
–ISERROR(B2:B100)
→ TRUE を 1、FALSE を 0 に変換
SUMPRODUCT(…)
→ 1 の合計、すなわちエラーセルの件数
それが 0 より大きいかどうかで、
「この列はエラーを含んでいるか」を判定できます。
結果としては TRUE / FALSE が返ってくるので、
IF と組み合わせるとより分かりやすくなります。
=IF(SUMPRODUCT(--ISERROR(B2:B100))>0, "エラー列", "正常列")
これを、例えば行の上部(B1 など)に置いておくと、
B列がエラーを含んでいるかどうかがひと目で分かります。
ISERROR を使うときの考え方と注意点
「エラーかどうか」をまず可視化する
数式が壊れているとき、多くの人は
「エラーを消す」ことから始めてしまいますが、
最初にやるべきは 「どこがエラーかを見える化する」 ことです。
そのために ISERROR を使って、
- 行ごとのエラー判定列を作る
- 列ごとに「エラーあり/正常」を表示する
という“診断用の列”を仕込んでおくと、
原因究明がかなり楽になります。
ISERROR は「全部のエラー」を対象にする
ISERROR は、#N/A を含むすべてのエラーで TRUE になります。
特定のエラーだけを検出したいときは、
- #N/A → ISNA
- #N/A 以外 → ISERR
といった兄弟関数も使い分けると、より細かい分析ができます。
例題
問題1
B2 に計算式が入っています。
B2 が何らかのエラー(#DIV/0!, #N/A など)になっている場合 TRUE、
エラーでない場合 FALSE を返す式を書いてください。
=ISERROR(B2)
問題2
B2 に計算式が入っています。
B2 がエラーのとき「エラーあり」、エラーでないとき「正常」と表示したいです。
そのための式を書いてください。
=IF(ISERROR(B2), "エラーあり", "正常")
問題3
B2:B100 の中に、エラーが1つでも含まれていれば「エラー列」、
1つもエラーがなければ「正常列」と表示したいです。
そのために ISERROR と SUMPRODUCT を使った式を書いてください。
=IF(SUMPRODUCT(--ISERROR(B2:B100))>0, "エラー列", "正常列")
問題4
B2:B10 に計算結果が入っています。
C列に「その行の B列がエラーなら TRUE、そうでないなら FALSE」を表示したいです。
C2 に書く式を書いてください。
=ISERROR(B2)
(この式を C10 までコピーします。)
問題5
B2:B100 の中に「エラーセルの数」が何個あるか数えたいです。
ISERROR と SUMPRODUCT を使った式を書いてください。
=SUMPRODUCT(--ISERROR(B2:B100))
まとめ
「エラー列を検出 → ISERROR」は、
エラーを“消す”前に まず見える化するためのステップ です。
基本形はこれだけです。
=ISERROR(セル)
そこから一歩進んで、
=IF(ISERROR(セル), "エラーあり", "正常")
=IF(SUMPRODUCT(--ISERROR(列範囲))>0, "エラー列", "正常列")
などに発展させることで、
「どの列が問題を抱えているのか」を素早く見抜けるようになります。
エラーが多くてどこから手を付けていいか分からない表こそ、
ISERROR で“エラーの地図”を作るところから始めてみてください。
