• ベストアンサー

IF関数にISNAとVLOOKUPが入った質問です

当初excel2007でIFEROOR文の中にVLOOKUP関数が入った表を作成したのですが、excel2003以下のバージョンでも使用できるようにIF文の中にISNA関数とVLOOKUP関数が入った式に変更してバージョンをexcel97-2003で保存しました。確認のためexcel2003で開き関数の作動チェックをしたところ正常に作動しました。ところが別のPCのexcel2003や2000で作動するとエラーがでます。自分のPCではOKなのですが、原因がわかりません。教えて下さい。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 横から失礼致します。  ANo.1様からの御返答が未だに行われてはおられない様ですので、差し出がましいとは思いますが、補足させて頂きます。 >countif関数では、どような式になるのでしょうか。  実際に使用している数式が、 =IF(ISNA(VLOOKUP(A6,zirei!$A$22:$I$30,4,0)),"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) である場合は、IF関数の判定式にCOUNTIF関数を使用する様に修正した数式は、以下の様になります。 =IF(COUNTIF(zirei!$A$22:$A$30,A6)=0,"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0))  因みに、 COUNTIF(zirei!$A$22:$A$30,A6) の部分は、zireiという名称のシートのA22~A30の範囲の中に、 =IF(COUNTIF(zirei!$A$22:$A$30,A6)=0,"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) の数式を入力しているシートのA6セルの値と等しい値を持つセルが何個存在しているのか、個数を数える関数です。  従って、 =IF(COUNTIF(zirei!$A$22:$A$30,A6)=0,"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) と言う数式は、この数式を入力しているシートのA6セルの値と等しい値を持つセルが、zireiという名称のシートのA22~A30の範囲の中に、1つも存在しない(=個数が0個)場合には、何も表示せず、1個以上存在する場合には、 VLOOKUP(A6,zirei!$A$22:$I$30,4,0) の計算結果を表示する数式という事です。  それから、少し気になったのですが、質問者様が作成された =IF(ISNA(VLOOKUP(A6,zirei!$A$22:$I$30,4,0)),"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) という数式は、Excel2002でも使用可能な数式(ISNA関数も、VLOOKUP関数も)ですから、おそらくExcel2003でも充分に使用可能ではないかと思われます。  ですから、 >別のPCのexcel2003や2000で作動するとエラーがでます。 の原因は、数式以外の部分にあるのではないかと思います。  良くある例では、別なパソコンにコピーする際に、数式の入っているセル又はシートのみをコピーして、参照先であるzireiという名称のシートや、若しくはzireiシートのA22~I30の範囲をコピーしていない場合があります。  或いは、別なパソコン内のExcelk Boookにもzireiという名称のシートが存在しているために、あえて参照先であるzireiという名称のシートや、若しくはzireiシートのA22~A30の範囲をコピーせずに、数式の入っているセル又はシートのみをコピーした場合には、元のパソコンのzireiシートと別なパソコンのzireiシートは、名称こそ同じではありますが異なるシートですから、コピーした数式中のzireiシートを参照していた部分の、参照先が存在しない事になってしまいます。  ですから、別のパソコンにコピーした先に、zireiという名称のシートが存在しているか否かと言う事と、コピーした数式中のzireiシートを参照していた部分が、自動的に書き換えられていないかどうかを確認して下さい。  もし、zireiという名称のシートが存在していなければ、新たに作成するか、或いは、数式中の参照先を別のシートに変更して下さい。  又、別のパソコンにもzireiという名称のシートのA22~I30の範囲にデータが存在している場合には、 =IF(ISNA(VLOOKUP(A6,zirei!$A$22:$I$30,4,0)),"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) 又は =IF(COUNTIF(zirei!$A$22:$A$30,A6)=0,"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) という数式を、セルのコピーではなく、文字列のコピーを行って、貼り付けるか、或いは数式を入力しなおすと良いと思います。

gge7ahjk1n
質問者

お礼

大変ありがとうございました。COUNTIF関数の使い方や他のPCで作動しなかった理由がよく理解できました。

その他の回答 (1)

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

ISxx関数もグレード(2002以降ならば問題なし)によっては使用できませんので、COUNTIF関数等に切り替えては如何でしょうか。 =IF(COUNTIF(検索範囲,検索値),VLOOKUP(・・・,"")

gge7ahjk1n
質問者

補足

早速の回答ありがとうございます。質問が分かりにくようですので、補足いたします 実際に使用している式は以下のとおりです =IF(ISNA(VLOOKUP(A6,zirei!$A$22:$I$30,4,0)),"",VLOOKUP(A6,zirei!$A$22:$I$30,4,0)) 「セルA6には最初から検索値が入力されています。A22:I30の範囲でA6と一致した値があった場合に6行目に該当事項を表示し、ない場合は空白とする」でISNA関数を使用しています。A6に最初から数値を入れておくと#N/Aがでますので、ISNA関数の特徴を活用して使ってみました。つまり私のPCではエラーがでませんが、他のPC(excel2003や2000)で使用するとエラーがでてしまうということです。 countif関数では、どような式になるのでしょうか。お願いします。

関連するQ&A