- ベストアンサー
エクセル関数使用で困っています!N/Aを消す方法は?
- エクセルの関数を使用してデータを比較している際に、N/Aが表示されることがあります。
- N/Aを消すために、ISERROR関数を使用する方法を試していますが、うまくいきません。
- 式に誤りがあるのかもしれません。正しい書き方を教えていただけないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
二つ目の式をよく見ると、「当然かなぁ」と思いますよ。 とりあえず、二つ目の式の =ISERROR(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE)) の部分だけを抜き取って、セルに入れてみましょう。 ISERROR関数の返り値は、 「TRUE/FALSE」のどちらか(あるいはエラー)ですから、 これに対して「$B=20」としてしまうと、 B20セルが「TRUE/FALSE」じゃないと比較の使用が無いわけです。 で、一つ目の式で正しく「調査あり」が返るとなると、 B20セルにも何らかの(TRUE/FALSE以外の)値が入っていると推測されます。 よって、これをそのままIF関数で判断させるとすると 「ほぼ必ず否の場合が選択される」ということですね。 対策です。 ・・・その前に、おそらくですが、VLOOKUPの部分は VLOOKUP($C20,INDIRECT($K$1&"!$B$2:$G$122"),6,FALSE) で良いかと思います。 さてさて、やや冗長ですが、 =IF(ISERROR(VLOOKUP($C20,INDIRECT($K$1&"!$B$2:$G$122"),6,FALSE)),"",IF(VLOOKUP($C20,INDIRECT($K$1&"!$B$2:$G$122"),6,FALSE)=$B20,"調査あり","")) こんな感じでIFをネストして(重ねて)やるのが一番のようです。 あるいはVLOOKUP関数で完全一致を狙っているようですので、 =IF(COUNTIF(INDIRECT($K$1&"!$B:$B"),$C20)=0,"",IF(VLOOKUP($C20,INDIRECT($K$1&"!$B$2:$G$122"),6,FALSE)=$B20,"調査あり","")) のように「対象シートのB列に“合致するものが無い”場合は空白」としても良いかもですね。 あまり変わりませんが、ちょっとはスッキリできるかなと。 以上、参考までにどうぞ。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のような式にすればよいでしょう。 =IF(COUNTIF(INDIRECT($K$1&"!B2:B122"),$C2)=0,"",IF(VLOOKUP($C20,INDIRECT($K$1&"!B2:G122"),6,FALSE)=$B20,"調査あり",""))
お礼
お礼が大変遅くなりました。 勉強になりました。 ありがとうございました。
- okgoripon
- ベストアンサー率44% (1141/2548)
=IF(ISERROR(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE)),"",IF(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE)=$B20,"調査あり","")) たぶんこれでいけるはず。 ISERRORは「エラーかどうかをBooleanで返す」だけの関数なので、#N/Aを消す場合にはもう1段、IF関数を重ねる必要があります。
お礼
早々のご回答をいただき、ありがとうございました。 大変参考になりました。 ご提示いただいた式で目的の動作が実現できました。
- keithin
- ベストアンサー率66% (5278/7941)
ISERROR関数の使い方が、考え方から間違っています。 >何が間違っているのでしょうか? あなたの計算式は =IF(ISERROR(VLOOKUP(…))= B20,"調査有","") と書かれています。 VLOOKUP関数がエラーになるとISERROR(VLOOKUP())の部分がTRUEになり、結果してあなたの書いた数式は =IF(TRUE = B20, "調査有","") となってB20はTRUEという値「ではない」ので""になります。 あなたのご質問への回答は、以上です。 #ご利用のエクセルのバージョンも書かれていないご相談ですが。 Excel2003までを使っている場合: =IF(ISERROR(VLOOKUP()),"",IF(VLOOKUP()=B20,"調査有","")) Excel2007以降を使っている場合: =IFERROR(IF(VLOOKUP( )=B20,"調査有",""),"")
お礼
早々に適切なご回答をいただきありがとうございました。 ISERROR関数の理解ができました。 Excelのバージョンも書かず申し訳ございませんでした。 Excel2003と2010を使っています。
お礼
大変ありがとうございました。 お陰様で解決しました。