スプレッドシートで数式を入れたら「#N/A」や「#VALUE!」が表示されてしまった。こんな経験はありませんか?
エラーが出ているセルを見つけて処理を分けたいケースは、実務でよくありますよね。
そんなときに使えるのがISERROR関数です。セルや数式の結果がエラーかどうかをTRUE/FALSEで判定してくれます。
この記事では基本の書き方からIF関数との組み合わせ、IFERROR関数との違いまで紹介します。
ISERROR関数とは?
ISERROR関数(読み方: イズエラー関数)は、指定した値がエラーかどうかを判定する関数です。
名前はIS(〜かどうか)+ ERROR(エラー)が由来です。
セルの値がエラーなら =ISERROR(A1) はTRUEを返します。
引数はチェックしたい値の1つだけです。結果はTRUEかFALSEの2択なので、とてもシンプルですね。
ISERROR関数にできることをまとめると、次のとおりです。
- セルや数式の結果がエラーかどうかをTRUE/FALSEで判定する
- IF関数と組み合わせてエラー時の処理を分岐する
- 条件付き書式でエラーセルを色付けする
- 7種類すべてのエラー(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!)を検出する
NOTE
ISERROR関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
ISERROR関数の書き方(構文と引数)
基本構文
=ISERROR(値)
カッコの中にエラーかどうかを判定したいセルや数式を指定するだけです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | エラーかどうかを確認したいセル参照・数式・値(例: A1、VLOOKUP(…)) |
引数は1つだけです。値がエラーならTRUE、エラーでなければFALSEを返します。
ISERROR関数がTRUE/FALSEを返すパターン
どんな値がTRUE(エラー)と判定されるかを一覧にしました。
| データの種類 | 判定結果 |
|---|---|
| #N/A | TRUE(エラー) |
| #VALUE! | TRUE(エラー) |
| #REF! | TRUE(エラー) |
| #DIV/0! | TRUE(エラー) |
| #NUM! | TRUE(エラー) |
| #NAME? | TRUE(エラー) |
| #NULL! | TRUE(エラー) |
| 数値(0を含む) | FALSE |
| 文字列 | FALSE |
| 論理値(TRUE/FALSE) | FALSE |
| 空白セル | FALSE |
ISERROR関数は7種類すべてのエラーをTRUEと判定します。エラー以外の値はすべてFALSEです。
TIP
#N/A以外のエラーだけを判定したい場合はISERR関数、#N/Aだけを判定したい場合はISNA関数を使います。用途に応じて使い分けてみてください。
ISERROR関数の基本的な使い方
エラーかどうかを判定する
もっともシンプルな使い方です。A1がエラーかどうかを確認します。
=ISERROR(A1)
A1がエラー値ならTRUE、正常な値ならFALSEが返ります。
IF関数と組み合わせてエラー処理する
ISERROR関数はIF関数と組み合わせることが多いです。エラーのときと正常のときで表示を変えます。
=IF(ISERROR(A2), "エラーあり", "正常")
A2がエラーなら「エラーあり」、正常な値なら「正常」と表示します。
エラーを空白に置き換える
数式のエラーを非表示にしたいときに使えます。
=IF(ISERROR(B2/C2), "", B2/C2)
C2が0のときに出る#DIV/0!エラーを空欄に置き換えます。正常に計算できればそのまま結果を表示します。
条件付き書式でエラーセルをハイライト
ISERROR関数を条件付き書式のカスタム数式に使うと、エラーセルを色付けできます。
手順:
- 色付けしたい範囲(例: B2:B20)を選択する
- 「表示形式」→「条件付き書式」を開く
- 「カスタム数式」を選び、次の数式を入力する
=ISERROR(B2)
- 書式スタイルで背景色を赤やオレンジに設定する
これでエラーが出ているセルがひと目でわかります。エラーが解消されるとハイライトが自動で消えます。
実務でのISERROR関数活用例
VLOOKUPのエラーを空白にする
VLOOKUPで検索値が見つからないと#N/Aエラーが出ます。IF+ISERRORで空白に置き換えましょう。
=IF(ISERROR(VLOOKUP(A2, Sheet2!A:C, 3, FALSE)), "", VLOOKUP(A2, Sheet2!A:C, 3, FALSE))
VLOOKUPの結果がエラーなら空欄、正常なら検索結果を表示します。
TIP
この処理はIFERROR関数を使うともっとシンプルに書けます。
=IFERROR(VLOOKUP(A2, Sheet2!A:C, 3, FALSE), "")で同じ結果になります。使い分けについては後ほど「IFERROR関数との違い」セクションで解説します。
エラーの種類ごとに処理を分ける
ISERROR関数の強みは、エラーの種類ごとに異なる処理ができることです。IF関数やERROR.TYPE関数と組み合わせて使います。
=IF(ISERROR(B2),
IF(ERROR.TYPE(B2)=7, "検索値なし",
IF(ERROR.TYPE(B2)=3, "値が不正",
IF(ERROR.TYPE(B2)=4, "参照エラー", "その他のエラー"))),
B2)
ERROR.TYPE関数はエラーの種類を番号で返します。主な番号は次のとおりです。
| 番号 | エラー値 | 意味 |
|---|---|---|
| 1 | #NULL! | 範囲に共通部分がない |
| 2 | #DIV/0! | 0で割り算した |
| 3 | #VALUE! | 値の種類が不正 |
| 4 | #REF! | 参照先が無効 |
| 5 | #NAME? | 関数名のスペルミス |
| 6 | #NUM! | 数値が範囲外 |
| 7 | #N/A | 検索値が見つからない |
この処理はIFERROR関数では実現できません。エラーの内容に応じて対応を変えたいときはISERROR関数の出番です。
ARRAYFORMULAで全行一括判定
ISERROR関数をARRAYFORMULA関数と組み合わせると、1つの数式で全行分を処理できます。
=ARRAYFORMULA(IF(ISBLANK(A2:A), "", IF(ISERROR(B2:B), "要確認", "OK")))
A列にデータがある行だけを対象に、B列のエラーチェックを実行します。数式を下方向にコピーする必要がないので便利です。
NOT+ISERRORで「エラーでないもの」を抽出
FILTER関数と組み合わせて、エラーでない行だけを抽出するパターンです。
=FILTER(A2:C, NOT(ISERROR(B2:B)))
B列がエラーでない行だけをフィルタして表示します。データクレンジングの前処理に使えます。
よくあるエラーと対処法
ISERROR関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| エラーなのにFALSEになる | エラーではなくエラーに見える文字列が入っている | LEN関数でセル内容を確認する |
| TRUEになるがエラーが見えない | 参照先の数式がエラーを返している | 数式バーでセルの中身を確認する |
| すべてTRUEになる | ISERROR関数の引数に数式を直接入れている | セル参照に変更する |
| IFと組み合わせても空白にならない | IF関数の引数の順番が逆 | =IF(ISERROR(...), 代替値, 正常時の値) の順番を確認する |
文字列のエラー値に注意
セルに「#N/A」という文字列が入力されている場合、ISERROR関数はFALSEを返します。見た目はエラーでも、文字列はエラー値ではありません。
LEN関数で文字数を確認するか、数式バーで先頭にアポストロフィ(’)がないかチェックしましょう。
IFERROR関数との違い・使い分け
ISERROR関数とセットで覚えたいのがIFERROR関数です。どちらもエラー処理に使いますが、役割が異なります。
IF+ISERRORとIFERRORの比較
同じ処理を書いたときの違いを見てみましょう。VLOOKUPのエラーを空白にする例です。
| 方法 | 数式 |
|---|---|
| IF+ISERROR | =IF(ISERROR(VLOOKUP(A2,B:C,2,0)),"",VLOOKUP(A2,B:C,2,0)) |
| IFERROR | =IFERROR(VLOOKUP(A2,B:C,2,0),"") |
比較すると次のような違いがあります。
| 比較項目 | IF+ISERROR | IFERROR |
|---|---|---|
| 構文の長さ | 長い(数式を2回書く) | 短い(数式は1回) |
| 可読性 | やや複雑 | シンプルで読みやすい |
| エラー種類の分岐 | できる(IF文でさらに分岐可能) | できない(全エラー一括処理) |
| 条件付き書式での利用 | 使える | 使える |
| 処理速度 | 数式が2回評価される | 数式は1回で済む |
ISERRORでしかできないこと
IFERRORでは代替できない、ISERROR関数ならではの使い方があります。
1. エラーの種類ごとに処理を分ける
IFERRORは「エラーなら代替値を返す」だけの関数です。ISERRORならIF関数やERROR.TYPE関数と組み合わせられます。#N/Aと#VALUE!で別の処理を行えます。
2. エラーかどうかだけを知りたい
「このセルがエラーかどうか」をTRUE/FALSEで返すだけでよい場合です。条件付き書式のカスタム数式に使うときに便利です。
3. NOT+ISERRORで「正常なデータ」を抽出する
FILTER関数の条件に NOT(ISERROR(...)) を使うと、エラーでない行だけを取り出せます。
結論: 迷ったらIFERROR、分岐したいならISERROR
実務での使い分けは次のとおりです。
- エラーを非表示にしたい・代替値を返したい → IFERROR関数
- エラーの種類ごとに処理を変えたい → ISERROR + IF関数
- エラーかどうかをTRUE/FALSEで知りたい → ISERROR関数
- #N/Aだけを判定したい → ISNA関数
迷ったらIFERROR関数から試してみてください。柔軟なエラー処理が必要になったらISERROR関数の出番です。
似たエラー判定関数まとめ
| 関数 | 判定対象 | 戻り値 | 用途 |
|---|---|---|---|
| ISERROR | 全7種のエラー | TRUE/FALSE | 全エラーの判定 |
| ISERR | #N/A以外の6種 | TRUE/FALSE | #N/Aを正常扱いしたい場合 |
| ISNA | #N/Aのみ | TRUE/FALSE | VLOOKUPの「見つからない」だけ判定 |
| IFERROR | 全7種(判定+代替値) | 任意の値 | エラー時に別の値を返す |
| IFNA | #N/Aのみ(判定+代替値) | 任意の値 | #N/A時だけ別の値を返す |
ISERRORと他のIS系関数
ISERROR関数はIS系情報関数のひとつです。
| 関数 | 判定内容 |
|---|---|
| ISBLANK | 空白かどうか |
| ISNUMBER | 数値かどうか |
| ISTEXT | 文字列かどうか |
| ISLOGICAL | 論理値かどうか |
| ISERROR | エラーかどうか |
| ISFORMULA | 数式が入っているかどうか |
データの種類に応じたチェックをしたいときは、IS系関数を使い分けてみてください。
まとめ
ISERROR関数は、セルや数式の結果がエラーかどうかをTRUE/FALSEで判定するシンプルな関数です。
ポイントをおさらいしましょう。
- 引数は1つ。エラー値ならTRUE、それ以外はFALSE
- 7種類すべてのエラー(#N/A、#VALUE!、#REF!など)を検出する
- IF関数と組み合わせて「エラーなら〜、正常なら〜」の分岐ができる
- エラーを非表示にするだけならIFERROR関数がシンプル
- エラーの種類ごとに処理を分けたいときはISERROR+IF関数を使う
エラー処理の基本として、ぜひ活用してみてください。
関連記事
エラーを非表示にしたいだけなら、IFERROR関数の使い方のほうがシンプルです。
空白かどうかの判定には、ISBLANK関数の使い方をあわせてどうぞ。
条件によって表示を切り替えたい場合は、IF関数の使い方を参考にしてください。
