• ベストアンサー

エクセルの#N/Aについて

はじめまして。 ただいまエクセルにて各種書類を作成中なのですが、困っておりまして質問しました。 数値を打ち込んだ時に、二つの表から数値を返してくる内容なのですが、二つの表のどちらを使用するかは別のセルに入ってる文字列で分けたいのです。 =IF(A1="ce",VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP(B5,I6:J8,2,FALSE)) がんばって作ったのがこれです。A1のセルに「ce」と入っているかどうかで、二つの表から数値を返すって内容です。一応ちゃんと動作はしたのですが、何も入って無い状態だと#N/Aが表示されてしまいます。 色々調べてみたのら、ISNAとかISERRORを使うと消えるのはわかったのですが、何処に組み込んだらいいのか・・・実際にやってみたら「引数が多い」とか色々エクセル先生に怒られてしまって・・・。 どのようにしたら良いか教えていただけませんでしょうか? あと、現在A1とセルを指定していて、A2、A3と手打ちで増やしていくつ盛りなのですが、A列のここからここまで見たいな指定は可能でしょうか?二つの表は固定です。 あわせて宜しくおねがいいたします。 ※文才が無く、駄文・長文ですいません。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

1つ目の質問ですが、#N/Aになるには、No.1の方が書かれている通り、3つの原因があります。どの場合でも空白で良いのですか? それとも、原因毎に表示を変えたいのでしょうか? どの場合でも空白で良いなら、↓でどうでしょう。 =IF(ISNA(IF(A1="ce",VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP(B5,I6:J8,2,FALSE))), "",IF(A1="ce",VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP(B5,I6:J8,2,FALSE))) ここまで単純なら2000でも問題ないと思います。 また、推測になりますが、2つ目の質問は、L6:M8とI6:J8を絶対参照にすれば済む話では無いでしょうか? つまりは、↓こんな感じです。 =IF(A1="ce",VLOOKUP(B5,$L$6:$M$8,2,FALSE),VLOOKUP(B5,$I$6:$J$8,2,FALSE)) これで式をどこにコピーしてもL6:M8とI6:J8から数値を探します。

bakyun
質問者

お礼

ご返答ありがとうございます。 まさにコレです。思った通りの動作をしてくれました。 =IF(ISNA(IF(A1="ce",VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP(B5,I6:J8,2,FALSE))), "",VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP(B5,I6:J8,2,FALSE))) ここまでは一度自分でいけたのですが・・・後ろの式にもIF(A1="ce",を入れないとダメだったのですね。 助かりました。ありがとうございます。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 vlookup関数のエラー判定すると数式が長くなるので簡略しています。 =IF(B5<>"",IF(COUNTIF(A1:A5,"ce"),VLOOKUP(B5,L6:M8,2,FALSE),VLOOKUP (B5,I6:J8,2,FALSE)),"") (1)B5セルが空白の場合、抽出はせずに空白とする、B5に不正文字入力の場合は#N/Aエラーで如何でしょうか    どうしてもエラー表示がいやならば、B5に入力規則を設定して必ず表にある文字列を選択できるようにしておくとか如何でしょうか。 (2)A1:A5範囲に"CE"が1つでも入力されていたらL6:M8範囲、以外はI6:J8範囲で抽出を行います

bakyun
質問者

お礼

早速の返答ありがとうございました。 私の説明が悪かったです。(2)の範囲していですが、よく考えたら各行ごとにCEの判定があるので、範囲指定してしまったらダメでしたね。スイマセン・・・。 COUNTIFではなく、やはりセル単体を指定しないとダメなんですね。 お手数をお掛けして申し訳御座いませんでした。

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

おそらくはB5セルにデータがないことによるエラーでしょう。あるいはB5のデータがL6からL8、またはI6からJ8にない場合にもエラーになりますね。 エクセル2007でしたら次のように式を変えてはどうでしょう。 =IF(A1="ce",IFERROR(VLOOKUP(B5,L6:M8,2,FALSE),""),IFERROR(VLOOKUP (B5,I6:J8,2,FALSE),"")) あるいは =IF(A1="ce",IF(ISERROR(VLOOKUP(B5,L6:M8,2,FALSE)),"",VLOOKUP (B5,L6:M8,2,FALSE)),IF(ISERROR(VLOOKUP(B5,I6:J8,2,FALSE)),"", VLOOKUP(B5,I6:J8,2,FALSE)))

bakyun
質問者

お礼

早速のご返答ありがとうございました。 説明が不足しておりました・・・当方エクセル2000です。 一応試してみましたが・・・ダメでした>< お手数をお掛けして申し訳ございませんでした。

関連するQ&A