IFERROR関数は、数式にエラーが無い場合はその計算結果をそのまま表示し、エラーが発生した時は指定した値を返す関数です。
- =IFERROR([エラーが出そうな数式],[エラー時に表示する値])
Excel2007から導入された関数なので、すでに10年以上が経過しているのですが、あまり定着しているとは言えません。それは、IFERROR関数は何らかの計算をしてその結果を返すのではなく、エラーであることを判定する関数であり、どのような場合にエラーが発生するのかを知っていなければ使えないからです。
そこで、今回は、IFERROR関数の基本的な使い方について出題します。
目次
1.IFERROR関数でエラーを回避する
問題
D列に単価×個数、E列にその1.1倍を求めなさい。ただし、商品名が空白の場合またはエラーの場合は空白にしなさい。
解説
単価×個数を求めます。
オートフィルをします。空白の行は0になります。
これを表示しないようにするために、IF関数を挿入します。
商品名が空白の場合は空白を返すようにします。
小計の1.1倍を求めます。
空白の行はエラーになります。
IF関数によって空白を返した場合(正確には空白文字列)は、何も入力していない空白セルとは異なり、0とはみなされません(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。
そのため、足し算や引き算などの四則演算はエラーとなります。
この場合も商品名が空白の場合は空白を返せばよいですが、ここではIFERROR関数を挿入します。
IFERROR関数とは、エラーになった場合に表示する値を指定することができる関数です。
カンマを入力します。エラーの場合は空白を返します。
IFERROR関数は初めから使うものではなく、計算式を入力してエラーがでそうになったらそれを回避するために用いる関数です。
2.ゼロ除算の回避
(1)#DIV/0!エラー
問題
各店舗で昨年度と今年度の実績を比較して、対昨年度比を求めたところ、今年度開店した店舗Eがエラーとなった。エラーの原因とその対処法を述べなさい。
解説
対昨年度比は、変化した後の数値である今年度の実績を、変化する前である昨年度の実績で割って求めます。
しかし、今年度開店した店舗は昨年度の実績がないため、昨年度の実績が0となっています。
このような比率は変化前を何倍すれば変化後になるかを求めているので、元の数が0であれば、何倍しても0のままです。したがって求めることができないのでエラーとなるのです。
いっぱんに、0で割り算することをゼロ除算(division by zero)といい、エラーとなります。
割られる数をそのままにして、割る数を0に近づけていくと、答えは大きくなります。割る数を10分の1にすると、答えは10倍になります。
これを続けていくと割る数が0の時、答えは無限大となります。
また、マイナスの場合はマイナス無限大となり、無限に小さくなります。
したがって、この昨年度比を正しく表示するなら「無限大」とするべきであり、これを無理やり、0%や100%などと表記するのは間違いです。
もともと昨年度比は昨年度に営業していたことを前提として評価する数値であり、今年度新たに開店した店舗を評価する数値ではありません。
何らかの数値を表示して、同列に評価するのは間違いです。数値データではない文字列か空白にするべきです。
IF関数を挿入します。昨年度がゼロ又は空欄であることを判定して、そうでなければ昨年度比を求め、計算できない場合は空白を返すか、別の文字列を表示します。
別解
IFERROR関数を挿入します。
エラーを回避して、エラーが表示される場合は空白を返すか、別の文字列を表示します。
(2)平均もエラーになる
問題
A列~C列の平均を求めなさい。ただし、エラーの場合は空白にしなさい。
解説
平均を求めます。
すべて空欄のときはエラーになります。
AVERAGE関数は空白セルを除いて計算するため、合計を0で割ることになります。割る数が0の場合、エラーとなります(参考:【Excel関数】平均AVERAGEは、数値の個数COUNTを意識して使うこと)。
IFERROR関数を挿入します。
カンマを入力します。エラーの場合は空白を返します。
これで完成です。
3.補足:IFERRORとISERRORの違い
ISERROR関数は計算式がエラーかどうかを判定して、その結果をTRUEまたはFALSEで返す関数です。判定するだけなので引数は1個です。
- =ISERROR([エラーが出そうな数式])
エラーであればTRUE、エラーでなければFALSEが返ってきますので、そのままIF関数の論理式に使うことも可能です。エラーでないときに別の値を表示したい場合は、ISERROR関数を使わなければなりません。
- =IF(ISERROR(~),[エラーの場合],[エラーでない場合])
また、TRUE・FALSEは四則演算等では数値の1と0とみなされますから、例えば「1-ISERROR(~)」とすれば、エラーのときは0、エラーでなければ1とすることも可能です(参考:【Excel】IF関数が使えない原因は「比較演算」の練習不足である)。
- =1-ISERROR(~)
一方、IFERROR関数はエラーの判定をするだけでなく、エラー時の値を指定する関数なので引数は2個です。エラーでないときは計算結果を表示します。
- =IFERROR([エラーが出そうな数式],[エラー時に表示する値])
解説は以上です。
4.動画版はこちら(無料)
この記事は、わえなび実力養成講座「ファンダメンタルExcel13」Program 13-20-2、13-20-3 のYoutube動画を書き起こして、加筆修正したものです。
- ファンダメンタルExcel 13-20-2 補講 IFERROR関数【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-20-3 補講 ゼロ除算の回避【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)