スプレッドシートで「#VALUE!」や「#REF!」などのエラーが出たとき、原因がすぐにわからなくて困った経験はありませんか。
エラーの種類が多いと、どれがどの原因なのか一つひとつ調べるのは大変ですよね。
そんなときに役立つのがERROR.TYPE関数です。エラーの種類を数値で返してくれるので、エラーごとに処理を分けたり、どのエラーが多いか集計したりできます。
この記事では、ERROR.TYPE関数の基本から実務で使える応用パターンまでまとめて紹介します。
スプレッドシートのERROR.TYPE関数とは?
ERROR.TYPE関数(読み方: えらー たいぷ)は、セルのエラー種類に対応する数値を返す関数です。
Googleスプレッドシートで発生するエラーにはいくつかの種類があります。ERROR.TYPE関数を使うと、それぞれのエラーに割り当てられた番号を取得できます。
ERROR.TYPE関数が返す値の一覧は次のとおりです。
| 返り値 | エラーの種類 | 主な原因 |
|---|---|---|
| 1 | #NULL! | 範囲指定の区切り文字が間違っている |
| 2 | #DIV/0! | 0 で割り算をしている |
| 3 | #VALUE! | 引数のデータ型が正しくない |
| 4 | #REF! | 参照先のセルが削除されている |
| 5 | #NAME? | 関数名や名前付き範囲のスペルが間違っている |
| 6 | #NUM! | 数値が計算できない範囲を超えている |
| 7 | #N/A | 検索対象が見つからない |
| 8 | #GETTING_DATA | 外部データの読み込み中 |
| #N/A | エラーなし | 引数がエラーでない場合は#N/Aを返す |
エラーでないセルを渡すと#N/Aを返す点がポイントです。「エラーかどうか」の判定にも使えますが、単純にTRUE/FALSEで判定したいならISERROR関数のほうが向いています。
ERROR.TYPE関数の書き方(構文と引数)
基本構文
=ERROR.TYPE(参照)
カッコの中にエラーかどうか調べたいセルや数式を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 参照 | 必須 | エラーの種類を調べたいセル参照または数式 |
引数は1つだけです。省略はできません。セル参照・直接値・数式の結果のいずれも指定できます。
NOTE
ERROR.TYPE関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、基本的な動作は同じです。
ERROR.TYPE関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。
エラーの種類ごとの返り値
さまざまなエラーをERROR.TYPE関数で調べると、次のような結果になります。
| 数式 | 結果 | 理由 |
|---|---|---|
=ERROR.TYPE(1/0) | 2 | 0 で割っているので #DIV/0!(= 2) |
=ERROR.TYPE(#VALUE!) | 3 | データ型エラー(= 3) |
=ERROR.TYPE(#REF!) | 4 | 参照エラー(= 4) |
=ERROR.TYPE(#NAME?) | 5 | 名前エラー(= 5) |
=ERROR.TYPE(#N/A) | 7 | 該当なしエラー(= 7) |
=ERROR.TYPE(100) | #N/A | エラーではないので #N/A を返す |
=ERROR.TYPE("ABC") | #N/A | 文字列もエラーではないので #N/A |
最後の2行がポイントです。エラーでない値を渡すと、ERROR.TYPE関数自体が#N/Aを返します。
セル参照で使う
実務ではセルを指定して使うケースがほとんどです。
=ERROR.TYPE(A2)
A2 にエラーが入っていれば対応する番号を返します。エラーでなければ#N/Aです。
たとえばA2に =1/0 と入力されていれば、ERROR.TYPE(A2) は 2 を返します。
数式の結果を直接判定する
ERROR.TYPE関数の引数に数式を直接入れることもできます。
=ERROR.TYPE(VLOOKUP("りんご",A1:B5,2,FALSE))
VLOOKUP関数の結果がエラーかどうかを調べられます。検索値が見つからなければ 7(#N/A)を返します。
ERROR.TYPE関数の実践的な使い方・応用例
SWITCH関数と組み合わせてエラーの原因を表示する
ERROR.TYPE関数が返す数値だけでは、何のエラーか一目ではわかりません。SWITCH関数と組み合わせると、エラーの種類を日本語で表示できます。
=IFERROR(SWITCH(ERROR.TYPE(A2),2,"ゼロ除算エラー",3,"データ型エラー",4,"参照エラー",5,"関数名エラー",7,"該当なし"),"正常")
A2 がエラーなら対応する日本語メッセージを表示します。エラーでなければ「正常」です。
ちょっと長く見えますが、やっていることはシンプルです。ERROR.TYPEの返り値をSWITCHで振り分けているだけですよ。
IFS関数でエラー種類に応じた対処法を表示する
SWITCH関数の代わりにIFS関数を使う方法もあります。
=IFS(ERROR.TYPE(A2)=2,"0で割っていないか確認",ERROR.TYPE(A2)=3,"データ型を確認",ERROR.TYPE(A2)=4,"参照先が削除されていないか確認",ERROR.TYPE(A2)=7,"検索値を確認",NOT(ISERROR(A2)),"エラーなし")
エラーの種類に応じて具体的な対処法を表示できるので、エラーチェックシートを作るときに便利です。
COUNTIF関数でエラーの件数を集計する
大量のデータにエラーが混ざっているとき、どのエラーが何件あるか集計したい場面があります。
まず作業列にERROR.TYPE関数の結果を出しておきます。
B2: =ERROR.TYPE(A2)
この数式をB列に下までコピーしたら、COUNTIFで集計します。
=COUNTIF(B2:B100,2)
この数式は #DIV/0! エラーの件数を返します。数字を変えれば別のエラーも集計できます。
エラーの分布を把握しておくと、データの修正方針を立てやすくなりますよ。
エラーの有無で条件分岐する
ERROR.TYPE関数とISERROR関数を組み合わせて、エラーの有無と種類で処理を分岐できます。
=IF(ISERROR(A2),IF(ERROR.TYPE(A2)=7,"検索値なし","その他のエラー"),A2)
A2 がエラーでなければそのまま値を表示します。#N/Aエラーなら「検索値なし」、それ以外のエラーなら「その他のエラー」と表示します。
VLOOKUP関数やINDEX/MATCH関数の結果列で使うと、エラーの原因切り分けに役立ちます。
ERROR.TYPE関数とISERROR/IFERROR関数の違い
エラー処理に使える関数は複数あります。それぞれの役割を比較してみましょう。
| 比較項目 | ERROR.TYPE関数 | ISERROR関数 | IFERROR関数 |
|---|---|---|---|
| 役割 | エラーの種類を数値で返す | エラーかどうかをTRUE/FALSEで返す | エラー時に代替値を返す |
| 返り値 | 1〜8の数値(エラーなしは#N/A) | TRUE / FALSE | 正常値またはエラー時の代替値 |
| エラーの区別 | できる(種類ごとに番号が違う) | できない(すべてTRUE) | できない(すべて代替値) |
| 主な用途 | エラー分類・集計・原因特定 | エラー判定・条件分岐 | エラー非表示・代替値設定 |
| 数式例 | =ERROR.TYPE(A1) | =ISERROR(A1) | =IFERROR(A1,"") |
使い分けのポイント: エラーを非表示にしたいだけならIFERROR関数が手軽です。エラーの有無だけ知りたいならISERROR関数を使います。エラーの種類まで特定したい場合にERROR.TYPE関数の出番です。
TIP
#N/Aだけを判定したい場合はISNA関数が便利です。#N/A以外のエラーだけを判定したいならISERR関数もあります。
よくあるエラーと対処法
ERROR.TYPE関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #N/A が返る | 引数がエラーではない | 仕様どおりの動作。エラーでないセルには#N/Aが返る |
| エラー番号がわからない | 返り値と種類の対応を覚えていない | 本記事冒頭の対応表を参照。SWITCH関数と組み合わせて日本語表示にすると便利 |
| #NULL!(番号1)が出ない | スプレッドシートでは#NULL!が発生しにくい | Excelとの違い。スプレッドシートでは範囲の区切りにコロンを使うため、#NULL!はほとんど発生しない |
| IFERROR関数と結果が違う | 役割が異なる | IFERRORはエラー時に代替値を返す関数。ERROR.TYPEはエラーの種類を数値で返す関数。用途が異なる |
| エラー番号8が返る | #GETTING_DATA エラー | 外部データソースの読み込み中に発生する。時間を置いて再読み込みすると解消されることが多い |
Excelとの違い
ERROR.TYPE関数はExcelとGoogleスプレッドシートで基本的に同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =ERROR.TYPE(エラー値) | =ERROR.TYPE(参照) |
| 返り値(1〜7) | 同じ | 同じ |
| #NULL!(返り値1) | 発生する | ほぼ発生しない |
| #GETTING_DATA(返り値8) | あり(外部データ接続時) | あり(外部データ接続時) |
| エラーなしの場合 | #N/A を返す | #N/A を返す |
引数名の表記が若干異なるだけで、機能は同じです。ExcelのIFERROR関数についてはExcelのIFERROR関数の記事で詳しく解説しています。
まとめ
ERROR.TYPE関数は、エラーの種類を数値で取得できる関数です。
ポイントを整理します。
- 構文は
=ERROR.TYPE(参照)で、引数は1つだけ - エラーの種類に応じて1〜8の数値を返す
- エラーでないセルを渡すと#N/Aを返す
- SWITCH関数やIFS関数と組み合わせて、エラーの種類を日本語で表示できる
- COUNTIF関数と組み合わせて、エラーの件数を集計できる
- エラーを非表示にしたいだけならIFERROR関数、エラーの有無だけならISERROR関数が手軽
- ERROR.TYPE関数はエラーの「種類」まで特定したい場面で活躍する
- ExcelのIFERROR関数と組み合わせパターンも基本は同じ
まずは =ERROR.TYPE(1/0) で「0除算 = 2」から試してみてください。
