IFERROR関数 ● エラーの場合に表示する値を指定する

[Excel 2007以降]

Excelの IFERROR(イフ・エラー)関数の使い方を紹介します。

セルに入力した数式が正しく実行できない場合、セルに「#DIV/0!」「#VALUE!」のようなエラー値が表示されます。IFERROR関数を使うと、そのようなエラー値の表示を防げます。

スポンサーリンク

書式

エラーの場合に表示する値を指定する
=IFERROR(, エラーの場合の値)

]にエラーが出る場合に、エラー値の代わりに[エラーの場合の値]を返します。[]にエラーが出ない場合は、[]がそのまま返されます。

引数

引数 説明
エラー対策の対象となる式を指定する。
エラーの場合の値 ]がエラーになる場合に、エラー値の代わりに表示する値を指定する。

使用例1…割り算がエラーになる場合に「---」を表示する

図1を見てください。「前年比」欄には「今年度÷前年度」を計算する数式が入力されています。「今年度」と「前年度」の両方に数値が入力されている場合は正しく計算されますが、文字が入力されている場合は「#VALUE!」、割る数が未入力の場合は「#DIV/0!」というエラー値が表示されます。

図1 セルD3に 「=C3/B3」を入力してセルD6までコピーすると、セルD4とセルD6にエラー値が表示される。

IFERROR関数を使用すると、エラーの発生に備えて対策を講じることができます。元々セルに入力されていた「今年度÷前年度」の式を、引数[]に指定します。[エラーの場合の値]に例えば「"---"」を指定すると、割り算を正しく行える場合は割り算の結果が表示され、エラーになる場合は「---」が表示されます。

=IFERROR(, エラーの場合の値)

セルD3 | =IFERROR(C3/B3,"---")

図2 セルD3にIFERROR関数を入力し直して、セルD6までコピーする。すると、セルD4とセルD6にエラー値の代わりに「---」が表示される。

なお、[エラーの場合の値]に空の文字列「""」を指定すれば、エラーが出る場合にセルに何も表示されないようにできます。

使用例2…VLOOKUP関数で検索値が見つからない場合に「該当なし」を表示する

図3を見てください。B列の「選手名」欄にVLOOKUP関数が入力されており、A列の「No」に対応する選手名が「登録メンバー」表から検索されています。「No」が「1」や「4」の選手名は正しく検索されていますが、セルA5に入力した「99」は「登録メンバー」表に存在しないのでエラー値「#N/A」が表示されます。

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])

セルB3 | =VLOOKUP(A3,$D$3:$E$7,2,FALSE)

図3 セルB3に VLOOKUP関数を入力してセルB5までコピーしたところ、「No」が「99」の選手名にエラー値が表示された。

このケースでも、IFERROR関数を使えばエラー値の代わりに「該当なし」のような文字を表示できます。引数[]に、元々セルに入力されていた VLOOKUP関数を指定します。[エラーの場合の値]に「"該当なし"」を指定します。

=IFERROR(, エラーの場合の値)

セルB3 | =IFERROR(VLOOKUP(A3,$D$3:$E$7,2,FALSE),"該当なし")

図4 セルB3にIFERROR関数を入力し直して、セルB5までコピーする。すると、セルB5にエラー値の代わりに「該当なし」が表示される。

メモ

「#N/A」エラーだけを対処するには
IFNA関数を使用すると、エラー値のうち「#N/A」エラーの場合にだけ対処できます。VLOOKUP関数で検索値が見つからない場合の「#N/A」エラーと、他の原因によるエラーを分けて対策を講じられます。

対処できるエラー値について

IFERROR関数のヘルプには、対処できるエラーの種類として次表のエラー値が列挙されています。

エラー値の例

エラー値 説明
#DIV/0! 0 または空白のセルで割り算が行われている。
#N/A 値が未定。VLOOKUP関数などの検索で値が見つからないときに出る。
#NAME? 定義されていない名前が使用されている。
#NULL! 半角スペースの参照演算子で指定した 2つのセル範囲に共通部分がない。
#NUM! 数値の指定に問題がある。計算結果がExcelで処理できる範囲を超えている場合など。
#REF! 数式の中のセル参照が無効。
#VALUE! 数式内のデータの種類が間違っている。

このほかにも、Excelには「#SPILL!」「#FIELD!」「#CALC!」などのエラー値があります。これらのエラーが出たセルをIFERROR関数の引数[]に指定すると、図5のとおりエラー値がそれぞれエラーとして認識されていることがわかります。ちなみにIFNA関数は「#N/A」エラーだけを認識します。

図5 セルC2に「=IFERROR(A2,"エラー")」、セルD2に「=IFNA(A2,"エラー")」と入力して表の下端までコピーした。

図6では、IFERROR関数の引数[]に図5のA列の数式そのものを指定してみました。「#SPILL!」エラーだけはそのままエラー値が返されていることがわかります。

図6 D列のセルに「=IFERROR([A列のセルに入力した数式],"エラー")」を入力した。例えばセルD10には「=IFERROR(SEQUENCE(3),"エラー")」と入力されている。

スポンサーリンク

関連記事