こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2010-12-07 11:26:05

QNo.6368540

困ってます

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

 横から失礼致します。
 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))

という数式を、セルのコピーではなく、文字列のコピーを行って、貼り付けるか、或いは数式を入力しなおすと良いと思います。

投稿日時 - 2010-12-08 17:37:27

お礼

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

投稿日時 - 2010-12-08 21:47:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2010-12-07 11:42:43

補足

早速の回答ありがとうございます。質問が分かりにくようですので、補足いたします
実際に使用している式は以下のとおりです
=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関数では、どような式になるのでしょうか。お願いします。

投稿日時 - 2010-12-07 14:04:03

あなたにオススメの質問