スプレッドシートでVLOOKUPを使っていると、検索値が見つからないときに#N/Aが出ますよね。
#N/Aは「見つからなかった」という正常な結果です。でも#VALUE!や#REF!が出たら、数式そのものに問題がある可能性があります。
「#N/Aは無視したいけど、それ以外のエラーだけ検出したい」。そんなときに使えるのがISERR関数です。
この記事では基本の書き方からIF関数との組み合わせ、ISERROR関数やISNA関数との違いまで紹介します。
ISERR関数とは?
ISERR関数(読み方: イズエラー関数)は、#N/A以外のエラーかどうかを判定する関数です。
名前はIS(〜かどうか)+ ERR(Error の略、ただし#N/Aを除く)が由来です。
セルの値が#N/A以外のエラーなら =ISERR(A1) はTRUEを返します。#N/Aや正常な値に対してはFALSEです。
引数はチェックしたい値の1つだけです。結果はTRUEかFALSEの2択なので、とてもシンプルですね。
ISERR関数にできることをまとめると、次のとおりです。
- セルや数式の結果が#N/A以外のエラーかどうかを判定する
- IF関数と組み合わせてエラー時の処理を分岐する
- #N/Aは正常扱いにしつつ、数式の不具合だけを検出する
- 条件付き書式でエラーセルを色付けする(#N/Aは除外)
NOTE
ISERR関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
ISERR関数の書き方(構文と引数)
基本構文
=ISERR(値)
カッコの中にエラーかどうかを判定したいセルや数式を指定するだけです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | エラーかどうかを確認したいセル参照・数式・値(例: A1、B2/C2) |
引数は1つだけです。値が#N/A以外のエラーならTRUE、それ以外はFALSEを返します。
ISERR関数がTRUE/FALSEを返すパターン
どんな値がTRUE(エラー)と判定されるかを一覧にしました。
| データの種類 | ISERR | ISERROR | 違い |
|---|---|---|---|
| #VALUE! | TRUE | TRUE | 同じ |
| #REF! | TRUE | TRUE | 同じ |
| #DIV/0! | TRUE | TRUE | 同じ |
| #NUM! | TRUE | TRUE | 同じ |
| #NAME? | TRUE | TRUE | 同じ |
| #NULL! | TRUE | TRUE | 同じ |
| #N/A | FALSE | TRUE | ここだけ違う |
| 数値(0を含む) | FALSE | FALSE | 同じ |
| 文字列 | FALSE | FALSE | 同じ |
| 論理値(TRUE/FALSE) | FALSE | FALSE | 同じ |
| 空白セル | FALSE | FALSE | 同じ |
ISERRとISERRORの違いは#N/Aの扱いだけです。#N/A以外の6種類のエラーはどちらもTRUEと判定します。
TIP
全エラーを検出したい場合はISERROR関数、#N/Aだけを判定したい場合はISNA関数を使います。用途に応じて使い分けてみてください。
ISERR関数の基本的な使い方
エラーかどうかを判定する
もっともシンプルな使い方です。A1が#N/A以外のエラーかどうかを確認します。
=ISERR(A1)
A1が#VALUE!や#REF!などのエラーならTRUEを返します。#N/Aや正常な値ならFALSEです。
IF関数と組み合わせてエラー処理する
ISERR関数はIF関数と組み合わせることが多いです。#N/A以外のエラーのときだけ処理を変えます。
=IF(ISERR(A2), "数式エラー", A2)
A2が#N/A以外のエラーなら「数式エラー」と表示します。#N/Aや正常な値ならそのまま表示します。
エラーを空白に置き換える(#N/Aは残す)
数式の不具合によるエラーだけを非表示にしたいときに使えます。
=IF(ISERR(B2), "", B2)
B2が#VALUE!や#DIV/0!なら空欄にします。#N/Aはそのまま残るので、「検索値が見つからない」ことがわかります。
条件付き書式でエラーセルをハイライト(#N/A除外)
ISERR関数を条件付き書式に使うと、#N/A以外のエラーセルだけを色付けできます。
手順:
- 色付けしたい範囲(例: B2:B20)を選択する
- 「表示形式」→「条件付き書式」を開く
- 「カスタム数式」を選び、次の数式を入力する
=ISERR(B2)
- 書式スタイルで背景色を赤やオレンジに設定する
#N/Aのセルはハイライトされません。数式の不具合だけが目立つので、修正が必要な箇所をすぐに見つけられます。
実務でのISERR関数活用例
VLOOKUPの#N/Aは残しつつ数式エラーだけ検出する
VLOOKUPで検索値が見つからない#N/Aは想定内です。でも#VALUE!や#REF!が出たら数式に問題があります。ISERR関数を使うと、この2つを区別できます。
=IF(ISERR(VLOOKUP(A2, Sheet2!A:C, 3, FALSE)), "数式を確認", VLOOKUP(A2, Sheet2!A:C, 3, FALSE))
#N/A以外のエラーなら「数式を確認」と表示します。#N/Aはそのまま表示されるので、「見つからなかった」ことが一目でわかります。
TIP
#N/Aも含めてすべてのエラーを非表示にしたい場合は、IFERROR関数を使うのが手軽です。
=IFERROR(VLOOKUP(...), "")で全エラーを空白にできます。
割り算のエラーだけを検出する
売上÷数量で単価を計算するとき、数量が0だと#DIV/0!エラーが出ます。ISERR関数で検出して対処しましょう。
=IF(ISERR(B2/C2), "計算不可", B2/C2)
0で割ったときの#DIV/0!は「計算不可」と表示します。通常の計算結果はそのまま表示されます。
ARRAYFORMULAで全行一括判定
ISERR関数をARRAYFORMULA関数と組み合わせると、1つの数式で全行分を処理できます。
=ARRAYFORMULA(IF(ISBLANK(A2:A), "", IF(ISERR(B2:B), "要確認", "OK")))
A列にデータがある行だけを対象に、B列の#N/A以外のエラーをチェックします。#N/Aの行は「OK」と表示されるので、数式の不具合だけを見つけられます。
NOT+ISERRで「#N/A以外のエラーがない行」を抽出
FILTER関数と組み合わせて、数式エラーがない行だけを抽出するパターンです。
=FILTER(A2:C, NOT(ISERR(B2:B)))
B列が正常値または#N/Aの行だけをフィルタして表示します。#N/Aの行も残るので、「見つからなかったデータ」を含めて確認できます。
ISERROR関数・ISNA関数との違い・使い分け
ISERR関数を理解するには、ISERROR関数とISNA関数との関係を押さえるのがポイントです。
3つの関数の判定範囲
3つの関数はエラーの判定範囲が異なります。
| 関数 | 判定対象 | #N/Aの扱い |
|---|---|---|
| ISERROR | 全7種のエラー | TRUE(エラー扱い) |
| ISERR | #N/A以外の6種 | FALSE(正常扱い) |
| ISNA | #N/Aのみ | TRUE(エラー扱い) |
この3つは次のような関係です。
ISERROR = ISERR + ISNA
つまりISERROR関数は、ISERR関数とISNA関数を合わせたものです。
どの関数を使うべきか
実務での使い分けは次のとおりです。
- 全エラーを検出したい → ISERROR関数
- #N/Aは正常扱い、それ以外のエラーだけ検出したい → ISERR関数
- #N/Aだけを検出したい → ISNA関数
- エラー時に代替値を返したい → IFERROR関数
迷ったらISERROR関数から試してみてください。「#N/Aは残したい」と感じたらISERR関数に切り替えましょう。
似たエラー判定関数まとめ
| 関数 | 判定対象 | 戻り値 | 用途 |
|---|---|---|---|
| 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時だけ別の値を返す |
ISERRと他のIS系関数
ISERR関数はIS系情報関数のひとつです。
| 関数 | 判定内容 |
|---|---|
| ISBLANK | 空白かどうか |
| ISNUMBER | 数値かどうか |
| ISTEXT | 文字列かどうか |
| ISLOGICAL | 論理値かどうか |
| ISERROR | エラーかどうか(全種類) |
| ISERR | エラーかどうか(#N/A除外) |
| ISFORMULA | 数式が入っているかどうか |
データの種類に応じたチェックをしたいときは、IS系関数を使い分けてみてください。
よくあるエラーと対処法
ISERR関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #N/AなのにTRUEになる | ISERRではなくISERROR関数を使っている | 関数名を ISERR に修正する |
| エラーなのにFALSEになる | #N/Aエラーが入っている(ISERRは#N/AをFALSEと判定) | 全エラーを検出したい場合はISERROR関数に変更 |
| エラーに見えるのにFALSEになる | エラーではなくエラーに見える文字列が入っている | LEN関数でセル内容を確認する |
| TRUEになるがエラーが見えない | 参照先の数式がエラーを返している | 数式バーでセルの中身を確認する |
| IFと組み合わせても空白にならない | IF関数の引数の順番が逆 | =IF(ISERR(...), 代替値, 正常時の値) の順番を確認する |
ISERRとISERRORの入力ミスに注意
ISERR関数とISERROR関数は名前が似ているため、入力ミスが起こりやすいです。
=ISERR(A1)→ #N/A以外のエラーを判定=ISERROR(A1)→ 全エラーを判定
#N/Aを除外したいのにISERROR関数を使っていると、#N/Aもエラー扱いになります。逆に全エラーを検出したいのにISERR関数を使うと、#N/Aを見逃します。
関数名をよく確認してから入力しましょう。
まとめ
ISERR関数は、#N/A以外のエラーかどうかをTRUE/FALSEで判定する関数です。
ポイントをおさらいしましょう。
- 引数は1つ。#N/A以外のエラーならTRUE、それ以外はFALSE
- #VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!の6種類を検出する
- #N/Aはエラー扱いしない(FALSEを返す)
- ISERRORとの違いは#N/Aの扱いだけ
- VLOOKUPの「見つからない」は正常扱いにして、数式の不具合だけ検出したいときに便利
#N/Aを除外したエラー判定が必要なときに、ぜひ活用してみてください。
関連記事
全エラーを判定したい場合は、ISERROR関数の使い方をあわせてどうぞ。
エラーを非表示にしたいだけなら、IFERROR関数の使い方のほうがシンプルです。
条件によって表示を切り替えたい場合は、IF関数の使い方を参考にしてください。
