• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:#N/Aを消そうとすると正常時も消えます)

エクセル関数使用で困っています!N/Aを消す方法は?

このQ&Aのポイント
  • エクセルの関数を使用してデータを比較している際に、N/Aが表示されることがあります。
  • N/Aを消すために、ISERROR関数を使用する方法を試していますが、うまくいきません。
  • 式に誤りがあるのかもしれません。正しい書き方を教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

二つ目の式をよく見ると、「当然かなぁ」と思いますよ。 とりあえず、二つ目の式の   =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列に“合致するものが無い”場合は空白」としても良いかもですね。 あまり変わりませんが、ちょっとはスッキリできるかなと。 以上、参考までにどうぞ。

green1112
質問者

お礼

大変ありがとうございました。 お陰様で解決しました。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

次のような式にすればよいでしょう。 =IF(COUNTIF(INDIRECT($K$1&"!B2:B122"),$C2)=0,"",IF(VLOOKUP($C20,INDIRECT($K$1&"!B2:G122"),6,FALSE)=$B20,"調査あり",""))

green1112
質問者

お礼

お礼が大変遅くなりました。 勉強になりました。 ありがとうございました。

  • okgoripon
  • ベストアンサー率44% (1141/2548)
回答No.2

=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関数を重ねる必要があります。

green1112
質問者

お礼

早々のご回答をいただき、ありがとうございました。 大変参考になりました。 ご提示いただいた式で目的の動作が実現できました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

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,"調査有",""),"")

green1112
質問者

お礼

早々に適切なご回答をいただきありがとうございました。 ISERROR関数の理解ができました。 Excelのバージョンも書かず申し訳ございませんでした。 Excel2003と2010を使っています。

関連するQ&A