【Excel】何が違うの?IF関数とIFERROR関数の使い分け
こんにちは!
先日終了した楽天スーパーSALEで寝落ちしてしまい、10店舗完走できなかった鈴木( @hello_shinfuna)です。
ポイント6倍止まりで終わっちゃいました。残念、無念(T_T)
さて、今日は先日生徒さんからも質問のあった、IFとIFERRORの使い分けについて説明したいと思います。
どちらもIFと名がついているので、条件により結果を返すというところは同じです。
簡単に言えば、IFは論理式に入力した条件に合うか(真=TURE)、合わないか(偽=FALSE)ですが、
IFERRORの場合は、指定した数式がエラーかどうかを判断して結果を返すというものです。
ここまで読んだだけでも分かると思いますが、IFはとIFERRORは全く別物の関数です。
では、何故生徒AさんからIFとIFERRORは何が違うか分からないと質問があったのでしょうか。。。
順に見ていきましょう!
スポンサーリンク
IFもIFERRORも空白処理ができる!ここが間違いやすいポイント!
見積書や請求書などExcelでフォーマットを作成する際、数式は入力しておいて必要な時に値だけ入力もしくは選択すると自動的に計算され後は印刷するだけといった状態に作っておくことが多いと思いますが、ここで役立つのが空白処理ですね!
フォーマットの状態だと値は未入力の状態です。でも数式は入っているので何かしら結果を返してきますよね。
その際、よく表示されるのがデータがありませんよという意味で表示される#N/Aです。
皆さん一度は見たことあるんじゃないでしょうか。
単位&単価には入力される項目と紐付いた値が参照先から呼び出されて表示されるという仕組みになっていますが、項目が入力されていないと参照先の値を引っ張ってこようにも出来ないということで#N/Aが表示されてしまいます。
適切な項目を入力さえすれば正しい結果が表示されるので間違いというわけではないのですが、#N/Aが表示されてると印刷する際に困りますし、何より見た目が良くないですよね??
値が入力された場合にのみ計算された結果が表示された方が美しいです!
そのために必要な処理が関数による空白処理です。
ちなみに単位と単価のセルに入力してある空白処理はIFERRORを使ってますが、小計セルはIF関数で空白処理を行ってます。
どちらも空白処理をしたい場合に用いる関数ということは理解できましたでしょうか?
では何故、同じ空白を表示させるのにIFとIFERRORを使い分ける必要があるのかを見ていきましょう!
ちなみに#N/A以外のエラーメッセージは以下の通り。
表示されたメッセージから何が間違っているのかが分かるので覚えておくといいですよ!
#N/A → データが存在しない場合のエラーメッセージ
#NAME? → 数式の名前に間違いがある場合のエラーメッセージ
#VALUE → 数式自体に誤りがある場合のエラーメッセージ(引数や括弧の数が合わない、参照先のセルに問題がある、等々)
IFERROR関数で空白処理できるのは数式がエラーの場合のみ!それ以外はIF関数を使うべし!
そもそもIFERROR関数の引数を見ると、このようになっています。
=IFERROR ( [エラーかどうかを判定したい数式] , [エラーの場合の値] )
IFの場合は論理式にかなり幅広い条件を指定できましたが、IFERROR関数の場合はエラーがどうかを判定したい数式のみ判定されます。逆に言うと、IFでは数式のエラー判定は出来ないため、使い分けが必要になるというわけですね。
#N/Aが表示されているセルに入力されている数式はが検索値がなくてエラーを返しています。
そのため下記のようにIFERROR関数をネストしてあげることで、エラー(#N/A)なら空白(” ”)を表示させているわけです。
このようにIFERROR関数とVLOOKUP関数との組み合わせ処理はかなり役立つ技なので覚えておいて下さい!
ちなみにIF関数では単位・単価の列を空白処理することは出来ません。
=IF(D18="#N/A","",VLOOKUP(D18,テーブル1,3,0))
なんだかこのような数式を組めば出来るのでは?と思うかもしれませんが、#N/AはExcelから自動表示されるエラーメッセージのため文字列としては認識されないんですね。
さて、ここで一つ気になることがあります。
単位・単価のセルをIFERRORで空白処理したところ、小計のセルの表示が#N/Aから#VALUEに変わりました。
小計のセルに入力されている数式は数量×単価という単純なものです。
通常、空白セル×空白セルと計算した場合、結果は0が返りますが、今回は参照先が空白なのに結果は#VALUEになってしまいました。
#VALUEの意味は "参照先のセルに問題がある" でしたね。
今回単価セルをIFERROR関数を使って空白処理しましたが、実際には数式が入っていますよね。
この数式はそもそも#N/Aが表示されるのを表面的に隠すためのものであって、内部的には#N/Aのままです。
このような状態のセルを参照してるので "参照先のセルに問題がある" に該当してしまうんですね。
では、この#VALUE表示も空白処理をしましょう!
エラーが表示されているのでIFERRORの出番か!?と思いがちですが、ここはIF関数を使うのが正解なのです。
?????ですよね(;´Д`)
IFERROR関数の定義をもう一度よく思い出してみてください。
判定する条件は "数式がエラーかどうか" でしたね。
この場合、小計セルに入力されている数式は =C18 * E18 という至ってシンプルな掛け算でが、#VALUEが返ってきてるのでIFERROR関数でも判定することは可能です。
空白になりましたね!
これで一件落着かなと思いがちですが、ここで落とし穴が一つ!!
項目を入力すると単位と単価がVLOOKUP関数により表示される仕組みになっていますよね。
この状態を再現してみましょう。↓
なんと!
VLOOKUP関数によって単位と単価が表示されましたが、数量が未入力状態だと小計は"0"が表示されてしまいまいた!
数量を入力しない見積書なんてないので数量を入力するまでの間のことですが、これはちょっと悔しいですよね (T_T)
まず、何故空白ではなく表示が"0"になったかですが、小計セルに入力されている数式は C18*E18 です。
この内、E18 は#N/A が表示されるのを隠していました。このE18が項目を入力することによって正しい値が返ってきたので#N/Aではなくなりましたね。
そう、このタイミングでもうIFERRORでは判定不能になってしまったのです。
というわけでIF関数の出番ですね。
数量が入力されるまでは空白を表示するという数式を入力して一件落着です!
参考までに数式は
=IF(C18="","",C18*E18)
生徒Aさんは#VALUEが表示されていたのでIFERROR関数で空白処理をしたのですが、レッスンではIFを使って下さいと説明があったので何故???となってしまったというわけですね。
めでたし、めでたし。
いいね or シェアして友達と記事を共有しよう
このブログを定期購読するなら下のボタンをクリック!
パソコンの基礎からMOS対策講座まで、船橋市のわかりやすいパソコン教室です!
まずは、無料体験からお気軽にご連絡ください。
お問合せ(お電話)047-406-5786
〒273-0864 船橋市北本町1丁目830-1 イオンタウン新船橋店 マックスバリューさん2F
スポンサーリンク
- 2017.09.08 Friday
- Excel
- 17:47
- comments(0)
- -
- -
- by ハロー!パソコン教室イオンタウン新船橋校