[Excel 2007以降]
Excelの IFERROR(イフ・エラー)関数の使い方を紹介します。
セルに入力した数式が正しく実行できない場合、セルに「#DIV/0!」「#VALUE!」のようなエラー値が表示されます。IFERROR関数を使うと、そのようなエラー値の表示を防げます。
書式
エラーの場合に表示する値を指定する
=IFERROR(値, エラーの場合の値)
[値]にエラーが出る場合に、エラー値の代わりに[エラーの場合の値]を返します。[値]にエラーが出ない場合は、[値]がそのまま返されます。
■引数
引数 | 説明 |
---|---|
値 | エラー対策の対象となる式を指定する。 |
エラーの場合の値 | [値]がエラーになる場合に、エラー値の代わりに表示する値を指定する。 |
使用例1…割り算がエラーになる場合に「---」を表示する
図1を見てください。「前年比」欄には「今年度÷前年度」を計算する数式が入力されています。「今年度」と「前年度」の両方に数値が入力されている場合は正しく計算されますが、文字が入力されている場合は「#VALUE!」、割る数が未入力の場合は「#DIV/0!」というエラー値が表示されます。
IFERROR関数を使用すると、エラーの発生に備えて対策を講じることができます。元々セルに入力されていた「今年度÷前年度」の式を、引数[値]に指定します。[エラーの場合の値]に例えば「"---"」を指定すると、割り算を正しく行える場合は割り算の結果が表示され、エラーになる場合は「---」が表示されます。
=IFERROR(値, エラーの場合の値)
セルD3 | =IFERROR(C3/B3,"---")
なお、[エラーの場合の値]に空の文字列「""」を指定すれば、エラーが出る場合にセルに何も表示されないようにできます。
使用例2…VLOOKUP関数で検索値が見つからない場合に「該当なし」を表示する
図3を見てください。B列の「選手名」欄にVLOOKUP関数が入力されており、A列の「No」に対応する選手名が「登録メンバー」表から検索されています。「No」が「1」や「4」の選手名は正しく検索されていますが、セルA5に入力した「99」は「登録メンバー」表に存在しないのでエラー値「#N/A」が表示されます。
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
セルB3 | =VLOOKUP(A3,$D$3:$E$7,2,FALSE)
このケースでも、IFERROR関数を使えばエラー値の代わりに「該当なし」のような文字を表示できます。引数[値]に、元々セルに入力されていた VLOOKUP関数を指定します。[エラーの場合の値]に「"該当なし"」を指定します。
=IFERROR(値, エラーの場合の値)
セルB3 | =IFERROR(VLOOKUP(A3,$D$3:$E$7,2,FALSE),"該当なし")
メモ
対処できるエラー値について
IFERROR関数のヘルプには、対処できるエラーの種類として次表のエラー値が列挙されています。
■エラー値の例
エラー値 | 説明 |
---|---|
#DIV/0! | 0 または空白のセルで割り算が行われている。 |
#N/A | 値が未定。VLOOKUP関数などの検索で値が見つからないときに出る。 |
#NAME? | 定義されていない名前が使用されている。 |
#NULL! | 半角スペースの参照演算子で指定した 2つのセル範囲に共通部分がない。 |
#NUM! | 数値の指定に問題がある。計算結果がExcelで処理できる範囲を超えている場合など。 |
#REF! | 数式の中のセル参照が無効。 |
#VALUE! | 数式内のデータの種類が間違っている。 |
このほかにも、Excelには「#SPILL!」「#FIELD!」「#CALC!」などのエラー値があります。これらのエラーが出たセルをIFERROR関数の引数[値]に指定すると、図5のとおりエラー値がそれぞれエラーとして認識されていることがわかります。ちなみにIFNA関数は「#N/A」エラーだけを認識します。
図6では、IFERROR関数の引数[値]に図5のA列の数式そのものを指定してみました。「#SPILL!」エラーだけはそのままエラー値が返されていることがわかります。