• ベストアンサー

エクセル比較し、データを入力

現在、ファイルが二つあり、それを比較し、 AのファイルのA列にあるデータとBのファイルのA列にあるデータが同じなら、 AのファイルのA列のデータを表示されるようにしたいと思い、下記のような式を作成しました。 =VLOOKUP(A1,BファイルSheet1'!A$1:A$8,1,0) そうすると、データがない場合は、#n/aと表示されてしまいます。 みなさんの質問を探して、iserrorや、isblankなどを試したのですが、 根本を理解していないせいか、うまくいきません。 そのまま、#N/Aでもいいのですが、空白("")にできないかなぁと思い、 投稿させてただきました。 ご教授ください。

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

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

式自体に誤りがありますね。次のような式にしてはどうでしょう。 =IF(COUNTIF([Bファイル.xls]Sheet1!A$1:A$8,A1)=0,"",A1) この式はAファイルで使われている式ですね。 Bファイルのシート1にA1セルのデータが無ければ空白に、有る場合にはA1の値を表示することになります。

y_usa
質問者

補足

早速のご回答、ありがとうございます。 やってみたのですが、それをコピーして使うと、 Aファイルにあって、Bファイルにないものでも、Aファイルのデータが表示されてしまいます。 何がおかしいのでしょうか・・・・

その他の回答 (5)

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

Bファイルにデータが名にもかかわらずCOUNTIFの結果が1となるということはBファイルへの参照が正しく行われていないからでしょう。 回答No5をぜひ確認してBファイルの参照の式を直すことが必要でしょう。

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

回答No2,4です。 別ファイルの参照の式に問題があるように思いますね。 一度、Aファイルのセルに = を入力した後でBアイルの参照するセル範囲を選択してみてください。 =[Bファイル.xls]Sheet1!A1:A8 のように表示されますか? 表示される通りの形で(A$1:A$8にする)元の式を直すことが必要でしょう。

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

回答No2です。 =IF(COUNTIF([Bファイル.xls]Sheet1!A$1:A$8,A1)=0,"",A1) AファイルのA1セルの値をBファイルのシート1のA1セルからA8セルの間に有るかないかを調べて無ければ空白のセルに、有ればA1のセルのデータを表示させるという式です。 Bファイルに無くてもA1セルのデータが表示されるというのは変ですね。 別のセルに=COUNTIF([Bファイル.xls]Sheet1!A$1:A$8,A1)の式を入力してBファイルにA1データがある場合と無い場合で試験してみてください。 A1データが無ければ答えは0となりますし有れば1になるでしょう。 なお、AファイルとBファイルのデータの順序は全く関係ありません。 AファイルとかBファイルとか述べていますが本当にBファイルのシート1を参照しているのか疑問ですね。 一度、別のセルに=[Bファイル.xls]Sheet1!A1と入力してみてください。BファイルのA1セルのデータが確かに表示されますか?

y_usa
質問者

お礼

ありがとうございます。 countifの式を入力してみたら、1と表示されました。また、=でその式を参照したら、表示は無事できました。 式が違うということは、何かデータが違うのでしょうか?ちょっと他のデータで試してみることにします。

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

 元データに同じデータが存在しない場合には、何も表示させないのでしたら =IF(ISNA(VLOOKUP(A1,BファイルSheet1'!A$1:A$8,1,FALSE)),"",=VLOOKUP(A1,BファイルSheet1'!A$1:A$8,1,FALSE)) で良いと思います。  ISNA関数は、( )内が#NAの場合に、TRUE(真の場合)となる関数ですから、VLOOKUP関数で、検索値に一致するデータが無い場合のみに、表示をさせない様に出来ます。(他の原因によるエラーと区別する事が出来ます)

  • ziggo
  • ベストアンサー率36% (12/33)
回答No.1

後はIf文を理解するだけです。 =if(iserror(VLOOKUP(A1,BファイルSheet1'!A$1:A$8,1,0)),"",VLOOKUP(A1,BファイルSheet1'!A$1:A$8,1,0)) ではいかがでしょうか? vlookupの結果がエラーだったら、””で空欄。 エラーでなかったら、検索した値を表示。 って感じです。

y_usa
質問者

補足

早速のご回答、ありがとうございます。 上記数式をコピーし、Bファイル範囲をこちらのデータの状態に戻してしてみましたが、Bファイルにない場合でも、Aファイルのデータが表示されてしまいます。 BファイルのA列データは、AファイルのA列データと記載している順番が違います。これは関係ないですよね? AファイルもBファイルも同じように並んでいないとだめなんでしょうか?

関連するQ&A