スプレッドシートのERROR.TYPE関数の使い方|エラー種類取得

スポンサーリンク

スプレッドシートで「#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)20 で割っているので #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スプレッドシートで基本的に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=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」から試してみてください。


関連記事

タイトルとURLをコピーしました