ADVERTISEMENT
目次
Excelで発生するエラーの種類とERROR.TYPE関数の役割
Excelでは、計算ミス、参照エラー、ゼロ除算など、様々な原因でエラーが発生します。これらのエラーは、#, !, ?, N/Aなどの記号で表示され、ワークシート全体の計算結果に影響を与えることがあります。エラーが発生した際に、単にエラーメッセージを表示するだけでなく、エラーの種類に応じて異なる対応をしたい場面は少なくありません。
ERROR.TYPE関数は、このような場合に役立ちます。この関数は、引数に指定したセルまたは数式で発生しているエラーの種類を、あらかじめ定められた数値コードで返します。例えば、#DIV/0!エラーであれば「2」、#N/Aエラーであれば「4」といった具合です。この数値を活用することで、エラーの種類を正確に識別し、それに応じた処理を実行できます。
ERROR.TYPE関数でエラーの種類を識別する
ERROR.TYPE関数は、エラーが発生しているセルや数式を引数に指定します。エラーが発生していない場合は「0」を返します。エラーの種類ごとに対応する数値コードは以下の通りです。
ERROR.TYPE関数のエラーコード一覧
ERROR.TYPE関数が返す数値コードは、Excelのバージョンによって若干異なる場合がありますが、一般的に以下のコードが使用されます。
#NULL!エラー:1
#DIV/0!エラー:2
#VALUE!エラー:3
#REF!エラー:4
#NAME?エラー:5
#NUM!エラー:6
#N/Aエラー:7
ERROR.TYPE関数の基本的な使い方
例えば、セルA1に数式「=B1/C1」が入っており、C1が0だった場合に#DIV/0!エラーが発生するとします。この場合、別のセルに「=ERROR.TYPE(A1)」と入力すると、「2」という数値が返されます。もしC1に数値が入っていれば、「0」が返されます。
この関数は単独で使うよりも、IF関数やIFS関数と組み合わせて使用することで、その真価を発揮します。
IF関数とERROR.TYPE関数を組み合わせたエラー処理
IF関数とERROR.TYPE関数を組み合わせることで、特定のエラーが発生した場合に、代替の計算結果やメッセージを表示できます。これにより、エラーが連鎖したり、ワークシートが不正確な状態になったりするのを防ぐことができます。
ゼロ除算エラーを回避する例
セルA1に「=B1/C1」という数式が入っており、C1が0になる可能性がある場合を考えます。この数式を直接入力する代わりに、以下の数式をセルA1に入力します。
=IF(ERROR.TYPE(B1/C1)=2,”ゼロ除算エラー”,B1/C1)
この数式は、まず「B1/C1」という計算を試みます。もしゼロ除算エラー(コード「2」)が発生した場合、IF関数は真の場合の処理として「ゼロ除算エラー」という文字列を表示します。エラーが発生しなければ、偽の場合の処理として「B1/C1」の計算結果を表示します。
複数のエラーに対応する例
複数のエラーに対応するには、IF関数をネストするか、IFS関数を使用します。ここではIFS関数を使った例を示します。セルA1に「=VLOOKUP(B1,C1:D10,2,FALSE)」のような数式が入っており、B1の値が検索範囲に見つからない場合(#N/Aエラー)や、参照範囲に問題がある場合(#REF!エラー)などを考慮します。
=IFS(ERROR.TYPE(VLOOKUP(B1,C1:D10,2,FALSE))=7,”データが見つかりません”,ERROR.TYPE(VLOOKUP(B1,C1:D10,2,FALSE))=4,”参照範囲エラー”,ERROR.TYPE(VLOOKUP(B1,C1:D10,2,FALSE))=3,”値エラー”,TRUE,VLOOKUP(B1,C1:D10,2,FALSE))
この数式は、まず#N/Aエラー(コード「7」)をチェックし、該当すれば「データが見つかりません」と表示します。次に#REF!エラー(コード「4」)、#VALUE!エラー(コード「3」)を順にチェックします。いずれのエラーも発生しなかった場合(TRUE)、最後の引数でVLOOKUP関数の本来の計算結果を表示します。
注意点:この数式では、VLOOKUP関数が複数回評価されるため、計算負荷が高くなる可能性があります。このような場合は、LET関数(Microsoft 365またはExcel 2021以降)を使用すると、数式を一度だけ評価させることができます。
ADVERTISEMENT
LET関数とERROR.TYPE関数による高度なエラー処理
LET関数は、数式内で変数に名前を付け、その名前を使って数式を記述できる機能です。これにより、同じ計算を繰り返し行う場合に、一度だけ計算結果を格納し、それを参照することで、数式を簡潔にし、計算効率を向上させることができます。ERROR.TYPE関数との組み合わせで、より洗練されたエラー処理が可能になります。
LET関数を使ったエラー処理の記述例
先ほどのVLOOKUP関数の例をLET関数を使って書き換えてみましょう。
=LET(result,VLOOKUP(B1,C1:D10,2,FALSE),IF(ERROR.TYPE(result)=7,”データが見つかりません”,IF(ERROR.TYPE(result)=4,”参照範囲エラー”,IF(ERROR.TYPE(result)=3,”値エラー”,result))))
この数式では、「result」という変数にVLOOKUP関数の計算結果を格納しています。その後、IF関数で「result」のエラーコードをチェックし、エラーの種類に応じてメッセージを表示するか、最終的に「result」の値を表示します。IFS関数を使わない場合でも、ネストしたIF関数で同様の処理が可能です。
LET関数はMicrosoft 365およびExcel 2021以降で利用可能です。それ以前のバージョンでは使用できない点に注意が必要です。
Iferror関数との違いと使い分け
Excelには、エラー処理のための関数としてIFERROR関数もあります。IFERROR関数は、数式がエラーを返す場合に、指定した代替値を表示するシンプルな関数です。
=IFERROR(数式,エラーの場合に表示する値)
例えば、「=IFERROR(B1/C1,”エラー発生”)」のように使用します。この関数は、エラーの種類を区別せず、どのようなエラーでも指定した値に置き換えます。
IFERROR関数とERROR.TYPE関数の使い分け
IFERROR関数は、エラーが発生したかどうかだけを知りたい場合に便利です。しかし、エラーの種類ごとに異なる処理を行いたい場合は、ERROR.TYPE関数とIF関数(またはIFS関数、LET関数)の組み合わせが不可欠です。
例えば、ゼロ除算エラーの場合は「0」を表示し、その他のエラーの場合は「エラー」と表示したい場合、ERROR.TYPE関数を使います。
=IF(ERROR.TYPE(B1/C1)=2,0,”エラー”)
このように、エラーの種類を特定し、それに応じた柔軟な処理を実現できるのがERROR.TYPE関数の強みです。
ERROR.TYPE関数でよくある失敗パターンと対処法
ERROR.TYPE関数を効果的に使用するために、よくある失敗パターンとその対処法を理解しておきましょう。
エラーコードの数値が意図したものと異なる
原因:Excelのバージョンによって、エラーコードの数値が若干異なる場合があります。また、ユーザーがエラーコードを誤って記憶している可能性もあります。
対処法:実際にエラーが発生しているセルに対して=ERROR.TYPE(セル参照)と入力し、返される数値を正確に確認してください。確認した数値をIF関数などの条件式に正しく記述します。
ERROR.TYPE関数自体がエラーを返す
原因:ERROR.TYPE関数に、エラーが発生していないセルや、数式ではない文字列などを引数として指定した場合、期待通りの結果が得られないことがあります。また、ERROR.TYPE関数はエラーを返すセルを参照した場合にのみ数値を返します。エラー処理をしたい数式を直接引数に指定する必要があります。
対処法:ERROR.TYPE関数の引数には、エラーが発生する可能性のある数式そのもの、またはその数式が入力されているセルを指定してください。例えば、セルA1に「=B1/C1」と入力されている場合、=ERROR.TYPE(A1)とします。もし、=ERROR.TYPE(B1/C1)のように直接数式を引数に指定することも可能です。
複数のエラーをまとめて処理してしまう
原因:IFERROR関数のように、エラーの種類を区別せずにすべてまとめて処理しようとしている。
対処法:エラーの種類ごとに異なる処理を行いたい場合は、IF関数をネストするか、IFS関数、LET関数とERROR.TYPE関数を組み合わせて使用してください。これにより、エラーの原因に応じたきめ細やかな対応が可能になります。
LET関数が使えない環境での数式
原因:Microsoft 365やExcel 2021以降のバージョンでない場合、LET関数は利用できません。
対処法:LET関数が使えない環境では、IF関数をネストするか、IFS関数を使用して同様のエラー処理を実装してください。ただし、数式が長くなり、可読性が低下する可能性がある点に留意が必要です。
ERROR.TYPE関数と条件分岐によるエラー処理のメリット
ERROR.TYPE関数と条件分岐を組み合わせることで、Excelワークシートのエラーハンドリング能力が格段に向上します。これにより、ユーザーはエラーメッセージに戸惑うことなく、問題の原因を特定しやすくなります。また、自動的に代替値が表示されるため、計算結果の整合性が保たれ、誤った判断を下すリスクを低減できます。
さらに、エラーの種類に応じたログ記録や、特定の条件でのみエラーメッセージを表示するといった、より高度な処理も可能になります。これにより、ワークシートの信頼性と使いやすさを両立させることができます。
まとめ
この記事では、ExcelのERROR.TYPE関数を使用して、発生したエラーの種類を数値で識別し、IF関数やIFS関数、LET関数と組み合わせて条件分岐によるエラー処理を行う方法を解説しました。ゼロ除算エラーや#N/Aエラーなど、特定のエラーに対して、それぞれ異なるメッセージを表示したり、代替値を設定したりすることで、ワークシートの堅牢性を高めることができます。Microsoft 365やExcel 2021以降ではLET関数を活用することで、より簡潔で効率的な数式を作成できます。エラーの種類を区別して柔軟なエラー処理を行いたい場合は、ぜひERROR.TYPE関数を活用してください。
【要点】ERROR.TYPE関数と条件分岐によるエラー処理
- ERROR.TYPE関数: 発生したExcelエラーの種類を数値コードで識別します。
- IF/IFS/LET関数との組み合わせ: エラーコードに基づき、条件分岐で特定のエラーに異なる処理(代替値表示、メッセージ表示など)を実行します。
- IFERROR関数との違い: IFERROR関数はエラーの種類を区別せず、ERROR.TYPE関数はエラーの種類を特定して柔軟な処理を可能にします。
- LET関数による効率化: Microsoft 365/Excel 2021以降で利用可能で、複雑なエラー処理を簡潔に記述できます。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
