概要
「ここ、たまに #N/A や #DIV/0! が出て見た目が汚い」
「エラーのときは別メッセージにしたい」
「計算はさせたいけど、エラーだけは画面に出したくない」
こういうときに使う“エラー検知センサー”が ISERROR(イズエラー)関数です。
ISERROR はとても単純で、
- 結果がどんな種類のエラーでも → TRUE
- 正常な値(数値・文字列・空白など) → FALSE
を返します。
この TRUE / FALSE を IF などと組み合わせることで、
「エラーのときだけ別処理」「エラーを空白にする」といった制御が簡単にできます。
ISERROR の基本
書式と動き
書式はこれだけです。
=ISERROR(値)
判定結果はこうなります。
値の計算結果がエラー(#N/A, #DIV/0!, #VALUE!, #REF!, #NUM!, #NAME?, #NULL! など)
→ TRUE- それ以外(正常な数値・文字列・空白など)
→ FALSE
具体例:
=ISERROR(1/0) ' → TRUE(#DIV/0! になる)
=ISERROR(1/2) ' → FALSE
=ISERROR(#N/A) ' → TRUE
=ISERROR("ABC") ' → FALSE
=ISERROR(A2) ' → A2 がエラーなら TRUE、正常なら FALSE
IF と組み合わせて「エラーなら別の値を返す」
エラーのときだけ「エラー」と表示する
=IF(ISERROR(A2/B2), "エラー", A2/B2)
動きはこうです。
A2/B2 の結果がエラー → ISERROR が TRUE → 「エラー」
A2/B2 の結果が正常 → ISERROR が FALSE → A2/B2 をそのまま表示
割り算(0除算)のようにエラーになりやすい計算でよく使う形です。
エラーのときは空白にする(見た目をきれいに)
=IF(ISERROR(VLOOKUP(C2, $F$2:$H$100, 2, FALSE)), "", VLOOKUP(C2, $F$2:$H$100, 2, FALSE))
VLOOKUP の結果がエラー(該当なし)なら空白、
正常なら検索結果を表示します。
実務では「#N/A を出したくない」場面が多いので、
このような「エラーなら空白」パターンは非常によく使われます。
ISERROR を使った検索式の“保険”
VLOOKUP や XLOOKUP とセットで使う
VLOOKUP や XLOOKUP は、見つからないとエラーを返します。
それをそのまま画面に出したくないとき、ISERROR が“保険”として機能します。
VLOOKUP+ISERROR の例:
=IF(ISERROR(VLOOKUP(D2, $A$2:$B$100, 2, FALSE)),
"未登録",
VLOOKUP(D2, $A$2:$B$100, 2, FALSE))
XLOOKUP には本来「見つからないときの値」を直接指定できますが、
旧バージョンで似た動きをさせるときにも ISERROR パターンは役立ちます。
ISERROR と他のエラー関数との違い
「すべてのエラー」をまとめて扱うのが ISERROR
ISERROR は、種類を問わずあらゆるエラーを TRUE とみなします。
- #N/A
- #DIV/0!
- #REF!
- #VALUE! など
これを「ひとまとめに扱いたい」ときには ISERROR が向いています。
特定のエラーだけを判定したいときは別関数
- #N/A だけを判定したい →
ISNA - エラーかどうかを判定しつつ、特定の一部は除外したい →
IFERROR(処理まで一気に書ける)
ただし「Excel 逆引き・基本テクニック」としては、
まず ISERROR を押さえておけば十分です。
ISERROR を使うときの注意とコツ
判定したい“式ごと”を ISERROR に入れる
よくあるミスは、「途中のセルだけ」を ISERROR にかけてしまうことです。
悪い例(やりたいことを満たせていない):
=IF(ISERROR(A2), "", A2/B2)
A2 にエラーがなければ B2 が 0 でもそのまま割り算を実行してしまい、
#DIV/0! が出ます。
正しくは「最終的な計算式」全体を ISERROR に入れます。
=IF(ISERROR(A2/B2), "", A2/B2)
「まず計算式を書く → それを ISERROR でくるむ」と覚える
- まずは普通にやりたい計算式を書く
例:A2/B2、VLOOKUP(C2,範囲,列,0) - それを丸ごと ISERROR に入れて、IF で包む
この順番で考えると、式を組み立てやすくなります。
例題
問題1
A2 を B2 で割った結果がエラーのとき TRUE、正常なとき FALSE を返す ISERROR の式を書いてください。
=ISERROR(A2/B2)
問題2
A2 を B2 で割った結果がエラーのときは「エラー」、正常なときは割り算の結果を表示する IF+ISERROR の式を書いてください。
=IF(ISERROR(A2/B2), "エラー", A2/B2)
問題3
C2 の商品コードを A2:B100 の表で VLOOKUP し、
見つからずにエラーになったときは「未登録」、見つかったときは商品名(2列目)を返す式を書いてください。
=IF(ISERROR(VLOOKUP(C2, $A$2:$B$100, 2, FALSE)), "未登録", VLOOKUP(C2, $A$2:$B$100, 2, FALSE))
問題4
D2 を E2 で割って「利益率」を計算し、
エラー(E2 が 0 など)のときは空白、正常なときはパーセントで表示する式を書いてください。
=IF(ISERROR(D2/E2), "", D2/E2)
問題5
F2 のセルについて、
式 =1/F2 の結果がエラーなら「NG」、エラーでなければ「OK」と表示する式を書いてください。
=IF(ISERROR(1/F2), "NG", "OK")
まとめ
ISERROR は、
- 「その式の結果がエラーかどうか」を TRUE / FALSE で教えてくれる
- どの種類のエラーでも一律 TRUE(まとめて扱える)
という“エラー検知センサー”です。
基本形は次の通りです。
=ISERROR(式)
=IF(ISERROR(式), エラーのときの値, 正常なときの値)
特に、
- 割り算(0除算)を安全に実行したい
- VLOOKUP / XLOOKUP の「見つからないエラー」を隠したい
- 集計用の中間列でエラーを出したくない
といった場面で強力に効きます。
まずは「普通に式を書く → その式を丸ごと ISERROR+IF で包む」という型を、
自分のシートで何度か試してみてください。
エラーを怖がらずに「コントロールする」感覚がつかめてきます。
