IFERROR関数☆

2024年8月10日

Excelの計算結果のエラーて結構嫌な感じで、見た目だけじゃなくて、そのセルを使った計算もエラーになったりします。それを解決できるのがIFERROR関数です。もしも計算の結果がエラーだったらほかの値に置き換える関数です。

Excelの計算式のエラーって

次の表を見てみましょう。

C列にはVLOOKUP関数しか入ってません。
セルC5よくあるのはVLOOKUP関数のもとになるセルB5の検索値が空欄で、空欄は元の表にないからエラーになるよっていう#N/Aというエラーです。
セルC4も#N/Aのエラーです。これはセルB4の一覧表にはない商品「うめ」を入力していて、一覧表で見つからないからのエラーです。
このように同じエラーでも理由が違いますね。

もしもB列が空欄だったら空白にすればセルC5で起きてるようなエラーは出なくなります。
次のような計算式にすると対処できますね。

=IF(B2="","",VLOOKUP(B2,$G$2:$H$6,2,FALSE))

また、セルC4の種類のエラーに関しては、入力規則で一覧表にない商品を入れられなくしてしまえば、エラーそのものが出なくなくなります。

このようにエラーが出そうな値が入ったときにその前に対処したり、エラーの原因そのものが起き無くしてしまうという方法がいちばんいいと思います。

それで、C列でエラーになるとそれをもとにかけ算しているE列もエラーになるし、セルE5もエラーになります。

これが起きるのでそもそもエラーが出ないようにして、それでも出てしまうときはその原因になっているものでIF関数を使って先回りしてエラーにならないようにする、それもどうにもならないときは、これから紹介するIFERROR関数でエラーじゃないものに置き換えるということをします。

でもこんなケースでエラーができる場合もあります。
セルC2の計算式は「=VLOOKUP(B2,G2:H6,2,FALSE)」でそれを下にオートフィルしています。

このときのエラーは、計算式のミスで起こるべくして起きたエラーなんです。VLOOKUP関数の範囲の「G2:H6」が絶対参照になっていないので、どんどん元の一覧表の範囲が下にずれていくために起きてるんです。

これはエラーではなくする工夫が必要なのではなくて、この計算式自体がミスってるので直さなきゃいけないのですよね。もしこれに気づかずにエラーが出てたときの工夫をしてしまうと、このミスが起きていることが隠れてしまうので、注意が必要です。本当に注意してくださいね!!

エラーの種類はいっぱいあるんですけど、もう一つだけエラーを紹介しますね。
次の#DIV/0!というエラーです。
5行目と6行目が空欄になってるからエラーになってるんです。

セルC2には次の計算式が入っています。

=A2/B2

これは算数の話なんですけど、割り算で0で割るってそもそもできないんですよ。3個のケーキを0人で割るって、意味わかんないでしょ。そんなルールがあるので、なんかの数字÷0は#DIV/0!のエラーになります。一部だと思うんですけど一回0で割った答えは0って教えてる場合もあるみたいで、それは算数として間違いなので、気を付けてください。少なくともExcelではエラーになります。

これもB列が空欄だったら空欄にするIF関数でエラー原因に対処できます。

そう考えると、IFERROR関数の出番はないように思えます。使わないで済めばそれが一番なのですが、どうしてもエラーが出るような値に対処しなければならない、もしかしたら何かの不具合で予想外のデータが入るかもしれないといったときには使うことになるでしょう。

IFERROR関数の使い方

実はIFERROR関数の使い方はとても簡単です。

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

値にはエラーになるかもしれないセルを指定することもありますが、最も多いのは、エラーになるかもしれない関数や計算式をいれることです。
エラーの場合の値は、もしもエラーだった時に表示する値です。0にしたいときは0と入れますし、空欄にするために""を指定してもいいですし、「エラーでした」のような文字を入れてもいいです。合計とか計算をしたときに影響が出ないものを設定しましょう。

さて、それではIFERROR関数はエラーではなかったとき、何を表示するかということなのですが、それは値で指定したセルや計算式の答えそのものを出します。
つまり、値がエラーじゃなかったら値を出し、エラーだったらエラーの場合の値を出すということになります。
値はエラーかどうかのチェックと、エラーではなかったら出すものの2つの役割があるんですね。

先に説明したVLOOKUP関数の例では、次のような式になります。

=IFERROR(VLOOKUP(B2,$G$2:$H$6,2,FALSE),"")

もし、セルB2が空白だったり見つからなかった場合などでVLOOKUP関数の結果がエラーになったら空白にして、そうではなかったらVLOOKUP関数の結果を出します。

#DIV/0!の例では、次のような式になります。

=IFERROR(A2/B2,"")

セルA2からセルB2を割った結果がエラーならば空白を出し、そうではなければセルA2からセルB2の計算値を出します。0で割った以外のエラーの時も空白になります。

IFNA関数☆

上記のVLOOKUP関数とIFERROR関数の例では、見つからなかった場合だけではなくて、どんなエラーでもエラーとして判定してしまいます。本来は見つからないエラーの時だけエラーにするとしたほうが、万が一、計算式のミスで出たエラーも防げるかもしれません。

その時に使うのは、ISNA関数で、ISERROR関数と同じなのですが、エラーは#N/Aのときのみエラーだと判定します。

=ISNA(値,NAの場合の値)

見つからないときに効果を発揮するので、何かを見つけるVLOOKUP関数やXLOOKUP関数と相性がいいです。

=IFNA(VLOOKUP(B2,$G$2:$H$6,2,FALSE),"")

もしVLOOKUP関数の結果が#N/Aエラーならば空白、そうでなければVLOOKUP関数の結果を出します。VLOOKUP関数の結果が#N/A以外のエラーの時はそのエラーがVLOOKUP関数の結果なので、そのエラーが表示されます。

まとめ

エラーが出たときに対応する関数であるIFERROR関数とその仲間のIFNA関数を説明しました。
大事なことなので繰り返し言いますが、この関数は間違えた数式で出るエラーをなんとかする関数ではないです。数式は間違いができないように作ってください。それでも、もしかしたらこういうエラーが出ちゃうかも、でも対処することはやり切ったし、というときに、慎重に判断して使ってください。

使い方は難しくないのですが、IFERROR関数の中に他の関数や数式が入るので、すこしExcel作るときに作りにくいかもしれませんね。紙に数式を一回書き出すとか、メモ帳アプリに一回作ってコピペするとか、工夫して入力してもいいと思います。最終的にはセル上で作れるようにはなってほしいです。

使い方が簡単な関数の説明だったので、エラーに対する対処についても説明しました。

関連関数

VLOOKUP関数:ほかの一覧表で一致したものに対する指定した列のデータを求めます

XLOOKUP関数:ほかの一覧表で一致したものに対する指定した範囲のデータを求めます

関連記事

テーブルと一緒に使うといい感じの関数☆

テーブルって使わなきゃExcelの魅力半減だよ☆

Excelで出るエラーの意味は☆