• ベストアンサー
  • 困ってます

#N/Aを消そうとすると正常時も消えます

Excelの関数使用で困っています。 下記2行はどちらも「調査あり」となるべきなのですが、#N/Aを消すために2行目のようにISERROR関数を加えると空白になってしまいます。 何が間違っているのでしょうか? ご教示いただけると助かります。 よろしくお願い致します。 =IF(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE)=$B20,"調査あり","") =IF(ISERROR(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE))=$B20,"調査あり","")

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数200
  • ありがとう数4

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

  • ベストアンサー
  • 回答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列に“合致するものが無い”場合は空白」としても良いかもですね。 あまり変わりませんが、ちょっとはスッキリできるかなと。 以上、参考までにどうぞ。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • IF関数についておしえてください。

    お世話になります。 作成している表の中で、利用しようとおもっている関数について教えてください。 A1セルに下記のようなIF関数を作成しました。 =IF(AND(B2>=1,C2<=0),"○",IF(AND(C2>=1,B2<=0),"○",IF(AND(B2>=1,C2>=1),"○",IF(AND(B2<=1,C2<=1),"")))) B2セルは別シートからVLOOKUPを利用して検索してきて、数字を表示させているセルのため、 該当しない場合”#N/A”と 表示されるところがありました。それで、”=IF(ISERROR”を利用して、#N/Aと表示される場合、空白で表示される数式にしたところ、今度はA1セルが条件にあっていないのに”○”と表示されるようになりました。≪”B2=空白(”#N/A”),C2<=1の場合にあたるのだと思います。≫ *B2セルを”空白”ではなく”0”で表示させるようにしても同様に”○”となりました。 A1セルに、  B2>=1,C2<=0の場合”○”  C2>=1,B2<=0の場合”○”  B2>=1,C2>=1の場合”○”  B2<=1,C2<=1の場合"空白" で表示できる方法をご存じの方、ご教示お願いいたします。 簡単なことなのかもしれませんが、エクセル関数初心者のため、大変困っております。 うまく、不明な点を説明できていませんでしたら、申し訳ございません。何卒 よろしくお願いいたします。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • VLOOKUPで#N/Aを非表示時”該当なし"

    いつもお世話になります。 WIN7 EXCELL2010です。 ご指導をいただきたいのは、VLOOKUPで#N/Aを表示されないように下記のような関数が入っています。 C2にコード番号が入りますか顧客名にはそのコード番号に該当しない時には この関数にどうすれば “ 該当なし ” と表示できますでしょうか。 参考 =IF(ISERROR(VLOOKUP($C2,顧客名!$A$2:$F$100,2,0)),"",VLOOKUP($C2,顧客名!$A$2:$F$100,2,0)) よろしくお願いします。

その他の回答 (3)

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

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を使っています。

関連するQ&A

  • EXCEL 2003にて予定表を作成しています。

    EXCEL 2003にて予定表を作成しています。 祝日を、VLOOKUP関数にて表示しました。 =VLOOKUP(A5,$F$5:$G$20,2,FALSE) エラー( #N/A )を非表示にするための関数を 入力するも、上手くいきません。図添付 =IF(ISERROR(VLOOKUP(A5,$F$5:$G$20,2,FALSE),"",VLOOKUP(A5,$F$5:$G$20,2,FALSE)) 「入力した数式は正しくありません」と表示されます。 正しい数式を教えてください。よろしくお願いします。

  • #N/A表示を空白にしたいのです(exel)

    EXELでVLOOKUPなどの関数を使用した際に、データがない場合には#N/Aと表示されますが、これを表示させずに、空白にしたいのですが、IF関数などを使って可能でしょうか。 現状の関数は以下の通りです。 =VLOOKUP(E24,sheet2!$C:$D,2,TRUE)

  • #N/Aとは?(すみません長文です)

    いつも参考にさせていただいています。 Windows98のExcelでIF関数とVLOOKUP関数を使った表を作っているのですが、 式を入力したセルが『#N/A』となってしまい困っています。 <Sheet1>                A   B   C   D          1 コード  氏名  項目1 項目2 2 0001 佐藤太郎 3 0002 佐藤次郎      4     ・ 5     ・ <Sheet2>   A    B   C   D 1 氏名  項目1 項目2 2 佐藤次郎 2 10 3 加藤花子  4 15   4 佐藤太郎  1 8 5 <Sheet2>に元のデータが入っています。<Sheet1>の"C2"以降に式をいれ、 氏名で検索してデータを参照できるようにしたいです。 それで式を =IF(A2="","",(VLOOKUP(B2,Sheet2!$A$1:$K$126,2,FALSE))) と入れたのですがエラーになってしまいました。 できればどちらのシートも並べかえずに使いたいと思っています。 どなたか解決策をご存知でしたら教えて下さい。よろしくお願い致します。

  • Excelの関数の意味を教えてください。

    Excel関数初心者です。 以下のふたつの関数の式の意味を教えてください。 どの値を見に行って、それに対してどのような処理を行なっているのかを、できるだけ、わかりやすく教えてください。 (1)=IF(ISERROR(VLOOKUP(A2,B$1:C1,2,0)),"",VLOOKUP(A2,B$1:C1,2,0))&B2 (2)=SUMPRODUCT(1*NOT(ISERROR(FIND(B2,$C$1:$C$15))),$D$1:$D$15)

  • 「#N/A」のエラーを表示させない方法

    VLOOKUP関数でデータを検索するときに、検索範囲内に適合するデータが無いと「#N/A」が表示されます。 これが出ないように空白にしたいのですが、方法を教えて下さい。 IF関数を使うんですかね?? 自分なりに調べてやってみたのですが、ギブアップしてしまいました。

  • エクセルで#N/Aのエラーになるものを0もしくは入力なしにしたいのですが

    タイトルのとおりです。 下記ののようなことをして、時間を出しています。 =VLOOKUP($A$5,INDIRECT(C1&"!A8:E38"),5,FALSE) C1は日にちです。 VLOOKUPのヘルプでは下記のようになっています。 >検索の型 検索値 と完全に一致する値だけを検索するか、その近似値を含めて検索するかを、論理値で指定します。TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。FALSE を指定すると、検索値 と完全に一致する値だけが検索され、見つからない場合は エラー値 #N/A が返されます。 このエラーが起きないようにしたいのです。 タイトルのように、0もしくは入力なしにしたいです。 以上、よろしくお願いいたします

  • VLOOKUP関数が#N/Aで使えません

    こんにちは。 エクセルで表を作っています。 VLOOKUP関数を使いたいのですが、エラー#N/Aが出て使えません。とてもシンプルな式なのに、何がだめでできないのか全く解かりません。 式は、=VLOOKUP(C3&D3,A7:D12,4,FALSE)です。 ちなみに、=VLOOKUP(C2,B7:D12,3,FALSE)にはちゃんと反応して数値を返してくれます。違いは検索値だけなのですが、数字になっているので、文字列に指定もしました。違うセルで=C3&D3は返してくれています。 何がいけなくてできないのか、教えていただけると助かります。 よろしくお願いします。

  • エクセルのVBA1について

    お世話になります。 エクセルの文で下記の式があります。 =IF(ISERROR(VLOOKUP($E3822,☆集計!$C:$D,2,FALSE)),"対象外",IF($D3822>=VLOOKUP($E3822,☆集計!$C:$D,2,FALSE),"対象","対象外")) これは、正常に通ります。 これをVBAのFomura関数にしてみした。 Mdata = 3824 Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & "対象外" & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & "対象外" & "," & "対象" & "))" 'Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & Gai & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & Gai & "," & "Tai" & "))" コンパイルエラーとなりませんのが、実行しますと下記の様になります。 #NAME?となり、 式が =IF(ISERROR(VLOOKUP($E3824,☆集計!$C:$D,2,FALSE)),対象外,IF($D3824>=VLOOKUP($E3824,☆集計!$C:$D,2,FALSE),対象外,対象)) となり、対象、対象外が" "で括られません。 そこで、様々なサイトを参考にして下記の様にダブルクォートを重複して書きました。 ""対象""、""対象外""とすると赤字でエラーとなってしまいます。 Formula関数は、初めて使いますが、他の、単純な関数では成功しています。 どのようにすれば、通常の関数と同じ働きでインプットできるのか、ご教授して頂ければ有りがたく存じます。 よろしくお願いします。

  • 関数について教えて下さい。

    =IF(ISERROR(VLOOKUP($A3,母日!$C$6:Y$40,23,FALSE)),"",VLOOKUP($A3,母日!$C$6:Y$40,23,FALSE)) の関数『6』『40』という数字を横にドラッグしただけでプラス44づづ増える関数式を教えてください。例えば、 =IF(ISERROR(VLOOKUP($A3,母日!$C$50:Y$84,23,FALSE)),"",VLOOKUP($A3,母日!$C$50:Y$84,23,FALSE)) =IF(ISERROR(VLOOKUP($A3,母日!$C$94:Y$128,23,FALSE)),"",VLOOKUP($A3,母日!$C$94:Y$128,23,FALSE))という具合です。 すみませんがお忙しいところスミマセン。宜しくお願い致します。

  • VLOOKUPでエラー表示と0表示を無くしたい

    VLOOKUPで下の条件にあった数式を作りたいのですが、うまくいきません。 条件は (1)参照先のセルが数値のため0が表示されるが、0と空白は区別したいので、戻り値が空白の場合は0を表示させない。 (2)参照元のシートには参照先には無いコードがあるので、エラー(#N/A)が出てしまうがエラーも表示させない。 作ってみた数式は =IF(OR(VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE)="",ISERROR(VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE))),"",VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE)) です。 戻り値が空白、またはエラーの時に参照先のセルが空白になるように作ったつもりですが、どうしてもエラー(#N/A)が出てしまいます。 どなたかアドバイスいただければ嬉しいです。 よろしくお願いいたします。