いまさら聞けないExcelの使い方講座

【Excel】IFERROR関数とISERROR関数って何? IF関数との使い分けを解説

エラー値を非表示にしたい

簡単な数式を使って違いを正確に見つけよう

 エクセルの関数には「IF○○」や「○○IF」といった関数が数多くあります。それだけ「もし~なら」の判定が必要なことが多いということですよね。

 以前の記事では、IF/IFS/SWITCH関数を使って、計算対象のセルが空白なのか、それとも「0」なのかに注目しました。

 ただ、単純に計算の結果として「エラー値」かどうかを判断して処理を分けるなら、IFERROR(イフエラー)関数があります。構文は以下の通りです。

IFERROR関数の構文。セルの[値]がエラー値なら[エラーの場合の値]を表示し、エラー値でなければ[値]をそのまま表示します

 エラー値の場合に空白("")としたり、「-」や「該当なし」といった任意の文字列を表示したりできます。VLOOKUP関数の結果に「#N/A」エラーを表示したくない場合によく使われます。

 IFERROR関数の構文は単純なので、悩むことはないと思いますが、関連する関数として、ISERROR関数やISERR関数というものもあります。定番のIF関数もあり、混乱しがちなポイントです。今回はそれぞれの違いを確認してみましょう。

エラー値を判定できるIFERROR関数

 IFERROR関数の構文は前述の通りです。エラー値が表示される可能性がある数式の外側に、IFERROR関数を組み合わせるだけです。

 サンプルでは、増減率としてセルD2に「=(C2-B2)/B2」という数式を入力して、オートフィルでコピーした状態です。「0」で割っているセルD5には「#DIV/0!」エラーが表示されています。IFERROR関数を組み合わせると「=IFERROR((C2-B2)/B2,"")」となります。

セルD2には「=(C2-B2)/B2」という数式(①)が入力されています。セルD5には「#DIV/0!」エラー(②)が表示されています
セルD2の数式を「=IFERROR((C2-B2)/B2,"")」と修正します(③)。「(C2-B2)/B2」の結果がエラー値なら空白("")を表示するという意味です
セルD2の数式をオートフィルでコピーしました。セルD5のエラー値が非表示になっています(④)

 無事にエラー値は非表示になりましたが、セルD6の「-100.00%」はおかしいですよね。これは、セルD6の数式中の「(C6-B6)/B6」がエラーにならないため、計算結果がそのまま表示されているためです。「-100%」も非表示するなら、IF関数を使って「=IF(OR(B6="",B6=0,C6=""),"",(C6-B6)/B6)」としたほうがいいでしょう。

 VLOOKUP関数とIFERROR関数を組み合わせた定番の方法も紹介します。VLOOKUP関数で検索値が見つからない場合に表示される、「#N/A」エラーを非表示にします。

セルF2には社員番号を検索値とするVLOOKUP関数の数式(⑤)が入力されていますが、検索値が空欄のため、「#N/A」エラー(⑥)が表示されています。動作としては正常です
IFERROR関数を組み合わせて「=IFERROR(VLOOKUP(E2,A1:C21,2,FALSE),"")」(⑦)とすると、「#N/A」エラーが非表示になります

ISERROR関数とISERR関数

 ISERROR関数とISERR関数はどちらも「イズエラー」と読みます。IFERROR関数と混同されることがありますが、“エラーかどうかを調べる”ための関数です。

 この2つを単独で使うことはあまりなく、IF関数と組み合わせるのが従来の使い方でした。

 Excel 2007でIFERROR関数が実装されたことにより、わざわざ使う理由がなくなっていますが、動作を見てみましょう。ISERROR関数を使うと「-100.00%」がエラー値でないことがわかります。

ISERROR関数とISERR関数の構文。[テストの対象]がエラー値かどうかを調べます。エラー値なら「TRUE」、エラー値でなければ「FALSE」を返します。ISERR関数は[#N/A]をエラー値とみなさず「FALSE」を返します。
C列には「=(C2-B2)/B2」といった数式が入力されています。E列には、ISERROR関数を入力してあります(⑧)。「-100.00%」がエラー値でないことがわかります。
「#N/A」エラーを参照すると、ISERROR関数とISERR関数の違いがわかります。ISERR関数では「#N/A」エラーをエラーと扱わず「FALSE」(⑨)と表示されています

 ちなみに、ISERROR関数とIF関数を組み合わせて、IFERROR関数と同じ処理を実現する場合は、以下のようになります。何度も同じ数式を記述する必要があって面倒ですよね。エラー値を処理するだけなら、IFERROR関数を使いましょう。

ISERROR関数の[テストの対象]とIF関数の[偽の場合]の2箇所に「(C2-B2)/B2)」と記述する必要があります
2箇所に同じVLOOKUP関数の数式を記述するのは厳しいものがあります

エラー値を非表示にする時によく使われる

 IFERROR関数は「エラー値であれば○○と表示する。エラー値でなければ元の値を表示する」と動作します。エラー値を“非表示にする用の関数”と割り切ってしまっていいでしょう。ただし、エラー値ではない異常値を処理したい場合は、IF/IFS関数を利用します。