• ベストアンサー

VLOOKUP関数について(初心者です)

エクセルで <sheet1>    A     B     C  1  1 2  2 3  3 <sheet2>    A    B    C 1  1    りんご  3/1 2  2    みかん   3  3    いちご  3/20 というファイルがあります。 そこで <sheet1>のB1 のセルに =VLOOKUP(A1,sheet2!A:C,3,0) という関数を入れます。 (この例ではsheet1と2は同じになってますが  実際はセルの大きさや行が違います。  つまり、sheet2で入力したものを  sheet1でまったく違う形にしてプリントアウトしたいんです) 【ここからが質問です】 上記の場合で、 sheet2のC列に何も入力されていないとき sheet1のB1に何も表示しないようにできますか? 現在は#N/Aとなっています。 よろしくお願いします。

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

#N/Aは、検査値が範囲の最左列に無いときに表示されます。 例でいうとSheet2のA列に無いときです。 #N/Aの対処は、下記で如何でしょう。 =IF(ISNA(MATCH(A1,Sheet2!A:A,0)),"",VLOOKUP(A1,Sheet2!A:C,3,0))

esuko11
質問者

お礼

できました! ありがとうございます。

その他の回答 (6)

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.7

ANo.1です。 先の回答は質問の趣旨と違うようですので 改めて回答します。 >そこでB列1行目に「=VLOOKUP(A1,sheet2!A:C,3,0)」と入れて >2行目3行目にコピーしたんですが >現在、B列2行目に#N/Aが出てしまうんです。 "2"を検索したときに "2"はあるが、参照先のC列が空白なので #N/Aが返ってくると思われているようですが、 違います。 見た目に"2"でも、書式の違い(数値と文字列)や 全角と半角、不要なスペース等で、 検索自体が不一致で#N/Aが返ります。 下記数式をどこかの列に入力して =MATCH(A1,Sheet2!A:A,0) 数値が表示されますか。 もし、#N/Aが返るようでしたら、 検索値が、範囲内に無いことを意味しますので、 一度、データを確認してください。

esuko11
質問者

補足

>"2"はあるが、参照先のC列が空白なので >#N/Aが返ってくると思われているようですが、 >違います。 そう思ってました。違うんですね。 >下記数式をどこかの列に入力して >=MATCH(A1,Sheet2!A:A,0) >数値が表示されますか。 数値が表示されました。 ということは検索値が範囲内にあるということ…で良いんでしょうか?

  • hama666
  • ベストアンサー率54% (12/22)
回答No.6

#2です。 既に解決したようですが補足です。 B2以降はオートフィルで数式をコピーすれば自動でC2C3は参照すると思いますが。

esuko11
質問者

補足

例にしたsheetは簡単に表記してあるんですが 実際は sheet1のA列1行目「1」に変更はないんですが sheet2の「1」は18行目だったり220行目だったりするんです。 (毎回、変更します) sheet2に、ずらずら~っといろんな項目が入っていて それを選んだ行だけsheet1に表示させたいんですね。 そして教えていただいた関数をコピーすると参照する場所が C2C3と決まってしまうんです。 わかりにくくてすみません。

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

Sheet1で 例データ A列   B列   C列 1 2008/3/1 2008/3/1 2 1900/1/0 3 2008/3/14 2008/3/14 ーー Sheet2 1 りんご 2008/3/1 2 みかん (内容は空白) 3 なし 2008/3/14 ーーー B1には =IF(VLOOKUP(A1,Sheet2!$A$1:$C$3,3,FALSE)="","",VLOOKUP(A1,Sheet2!$A$1:$C$3,3,FALSE)) ーー C列は(不適当例だが参考に) =VLOOKUP(A1,Sheet2!$A$1:$C$3,3,FALSE) 変に式を立てると エクセルの「データは出来るだけ数にする」という強い横からの力で 空白ーー>0-->日付書式の場合1900/1/0になってしまうようだ。 ーーー >現在は#N/Aとなっています。 普通にやると上記C列のようになると思うが、どういう式だろうか?。

esuko11
質問者

補足

私がやりたいと思っているのは以下の通りです。 <sheet1>      A列   B列   C列 1行目   1 2行目   2 3行目   3 <sheet2>      A列   B列   C列 1行目   1   みかん  3/1 2行目   2   りんご   3行目   3   いちご  3/20 これで<sheet1>のB列に関数を入れて    A列   B列   C列 1行目 1    3/1 2行目 2    3行目 3    3/20 こういう風にしたいんです。 そこでB列1行目に「=VLOOKUP(A1,sheet2!A:C,3,0)」と入れて 2行目3行目にコピーしたんですが 現在、B列2行目に#N/Aが出てしまうんです。 説明がわかりにくくてすみません。

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

一例です。 =IF(VLOOKUP(A2,Sheet2!A:C,3,FALSE)<>"",VLOOKUP(A2,Sheet2!A:C,3,FALSE),"") >現在は#N/Aとなっています。 ⇒シート1のA1内容がシート2のA列上にないという事で、C列の空白とは関係ありません。

esuko11
質問者

お礼

<> これを使うなんて思いつきもしませんでした。 こういう方法もあるんですね。ありがとうございます。

  • d1black
  • ベストアンサー率0% (0/1)
回答No.3

IsError(□)という関数があって、□がエラーである場合に、「True(真)」を返す関数です。 単にエラーをなくしたいときに、私はよく使います。 質問の場合だと次のようになります。 =If(IsError(Vlookup(A1,sheet2!$A&1:$C$3,3,0)),"",Vlookup(A1,sheet2!$A&1:$C$3,3,0))) こうしておけば、エラーがでたら””(何も表示しない)になります。

esuko11
質問者

お礼

ISERROR という関数は知りませんでした。 すごく使い道がありそうですね。 ありがとうございます。

  • hama666
  • ベストアンサー率54% (12/22)
回答No.2

=VLOOKUP(A1,sheet2!A:C,3,0) を以下の式で入れ替えてください。 =IF(Sheet2!C1="","",VLOOKUP(A1,Sheet2!A:C,3,0)) 「C1が空欄なら空欄を表示」というIF文です。

esuko11
質問者

お礼

私の説明が不十分だったようなんですが、 この関数だと C1が空欄かどうかだけを参照して C2やC3は参照してくれませんでした。ごめんなさい。

関連するQ&A

専門家に質問してみよう