このエラー、見たことありますか?
私はあります。
初見でこれを見たとき、時間がなかった&複雑な計算をしていたのもあり正直頭が真っ白になりました…。
まじかよ、なんで、どうして、こうなっているんだ…と。
実は前回の記事でもこのエラーがでていました。
「#N/A」とは何か、原因は何なのか、
後ほど説明しますが、焦らず確認と追記をすることで表示しないことができるエラーです。
そのために使う関数は…IFとISERRORです!!
◎エクセルを入れている環境・バージョン
Windows7
Excel2016
「#N/A」とは
「該当なし (not applicable)」あるいは「利用できない (not available)」の略。
「参照値が見つからない」場合に表示されることが多い。
「#N/A」が表示される原因
参照しているセルが空白、または検索対象にない間違った値が入力されている。
以下でエラーがでているのは、参照しているセル(E3)が空白だからです。
結構単純な原因ですね。
サンプルデータ
今回は以下の表を使ってやっていきます。
在庫のセル(F3)には赤枠内の式が入っています。
IFの書式
=IF(①条件式, ②真の場合の処理, ③偽の場合の処理)
①条件式
○○の場合、○○だったら~という意味
この条件式が成り立つ場合は②の処理へ、成り立たない場合は③の処理を行う
②真の場合の処理
条件式が成り立つ場合の処理
③偽の場合の処理
条件式が成り立たない場合の処理
省略可能なので、記述しないでもOK
その場合の書式は以下となる
=IF(①条件式, ②真の場合の処理)
— 条件式って何?真って何?偽って何? —
例えば、あなたはスーパーにりんごを買いに来ているとします。
この場合は以下のように表すことができます。
=IF("りんごがあれば", "買う", "買わない")
“りんごがあれば”が条件式となり
“買う”が真の場合の処理
“買わない”が偽の場合の処理となります。
ISERRORの書式
=ISERROR(①テストの対象)
①テストの対象
エラーかどうかを判定する対象
範囲指定をしたセルではなく単体のセルを指定する
返り値はTRUEかFALSEとなり、エラーになる場合はTRUE、エラーにならない場合はFALSE
IFとISERRORをどうやって使って「#N/A」を表示しないようにするの?
ここからが本題です。
「#N/A」を表示しないようにする書式を以下に書きますね。
=IF(①ISERROR(テストの対象), ②真の場合の処理, ③偽の場合の処理)
①ISERROR(テストの対象)
エラーかどうかを判定
②真の場合の処理
条件式が成り立つ場合の処理
③偽の場合の処理
条件式が成り立たない場合の処理
こういう感じに記述してあげれば表示しないようにできます。
サンプルデータに当てはめるとこういう感じになります。
=IF(ISERROR(VLOOKUP(E3, A2:C6, 3, FALSE)), "在庫なし", VLOOKUP(E3, A2:C6, 3, FALSE))
サンプルデータでエラーになっていたのはVLOOKUPの箇所でした。
ここをISERRORのテストの対象として指定し、
エラーの場合は在庫なし、エラーではない場合はVLOOKUPを実行します。
VLOOKUPの検索対象(E3)が空なのでこのまま[Enter]を押すと…
在庫なしになりましたね!
次は「シャーペン」を商品名(E3)に入れて[Enter]を押すと…
左の表のシャーペンの在庫を確認すると105ですね、同じ値が表示されているのでこれもOKです。
最後は検索対象にない値を入力します。
検索対象とはサンプルデータの場合左の表(A2:C6)となります。
この表にない値、例えば「のり」と入力してみましょうか。
「のり」は検索対象になくVLOOKUPがエラーを返したため在庫なしと表示されています。
これで「#N/A」が表示されないようにすることができました!
もしかしてIFだけでも「#N/A」を表示させないようにすることができるんじゃ?
以下のように商品名(E3)が空だったら、と書けばできないこともないのですが
これだと商品名(E3)が空だった場合のみの処理しかできておらず
例えば商品名(E3)に「のり」と入れた場合、左のリストにはないので「#N/A」となってしまいます。
そのためできれば上記記載の方法が望ましいと思います。
まとめ
・「#N/A」が表示される原因は、参照しているセルが空白、または検索対象にない間違った値が入力されている
・IFとISERRORを使うことにより「#N/A」を表示しないようにすることができる
・IFの書式は「=IF(条件式, 真の場合の処理, 偽の場合の処理)」、ISERRORの書式は「=ISERROR(テストの対象)」
今回はIF関数とISERROR関数の記事を記載しました。
簡単な計算ロジックを書いている場合ならまだしも、複雑な計算ロジックなどを書いている場合は後々そのエクセルを使う人が悲しい気持ちにならないようにIF関数とISERROR関数を使ってエラー処理を入れた方が良いと思います。
また、IFはエラー処理をする場合以外にも使えますので意識的に使ってみてくださいね!