• ベストアンサー

ISNAとISERRORの使い方の違い

こんばんは。 超初心者です。教えてください。 VLOOKUP関数で、検索結果がみつかったらその値を表示する式で =IF(ISERROR(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法)) という書き方と =IF(ISNA(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法)) という書き方をみつけました。 1.どちらがよいのでしょうか? 2.どちらも同じ答えがでるのでしょうか? 3.またISERRORとISNAでは何が違うのでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 >=IF(ISERROR(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法)) こちらがオーソドックスだと思います。 理由は、VLOOKUPの吐き出すエラーの種類は、VLOOKUPは、#VALUE!, #REF!, #N/A!, #NAME! があります。(他にも出るかもしれません) #N/A! というのは、 VLOOKUP(検索値,範囲,列番号,検索の型) この中の「検索値」が見つからなかったことに対して、エラーを出さないようにするためのものです。ISERRORでも基本的には同じことです。ワークシートの数式入力というは、心理的に短いほうを選ぶという習慣がありますが、こういうときは、ISERRORという何でもエラー対応のほうが安心できます。しかし、ISNA でも間違いではありません。

noname#53775
質問者

お礼

ありがとうございました。 実はISERRORで作成していたのですが、 いろいろインターネットをみていたらISNAで 作られているものが多く、「間違った」と不安に なっていたのでした。 ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ISNA関数はテスト対象セルの値が#N/Aのエラーの時TRUEを返す. ISERROR関数はテスト対象セルの値がエラーの時TRUEを返す。 ISERRはエラーが#N/Aのエラー以外の時TRUEを返す. ーー VLOOKUP関数は関数を入力する段階のエラーを除き、検索値が、表に 見つからないというエラーがほとんど(注)で、その場合#N/Aが出るから 質問のケースはどちらでも良いということだと思う。 ISERR関数を使うと不適当ということはいえるが。 ISNAはせいかくに捉えていつとも言えるが、それ以外のエラーの予防線を張っておくことも用途も言えるし、他の関数も含めて一律で やるというのもありと思う。 (注)(1)前もってVLOOKUPを入れておくが、第1引数が未入力でエラー (2)第1引数が入力されたが、検索表に見当たらないのでエラー の2種ある。

noname#53775
質問者

お礼

ありがとうございました。 ISNAのほうが正確にとらえているのですね。 勉強になりました。 ありがとうございます。

関連するQ&A