• ベストアンサー

VLOOKUPとIFの質問です

エクセルデータベースからの抽出について質問です。 主キー(受注番号、管理番号など)を検索してあれば、実行、なければ空欄を表示ずるようにしたいのですが、出来るのでしょうか? たとえば、 IF条件…A1に入力された値(主キー)を、DBより検索し、あれば 真の場合…A1に入力された値の存在した列から数えての、指定した列の値を表示する 偽の場合…空欄を表示する この場合の、IF条件で、vlookupを使うと思うのですが、値があるかないかを区別する方法がわかりません。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

方法はいくつかあります。 ■ISERRORとVLOOKUPで判定、TRUEなら存在しない、FALSEなら存在するのでVLOOKUPを実行 =IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$D$100,3,FALSE)),"",VLOOKUP(A1,Sheet2!$A$1:$D$100,3,FALSE)) ■ISERRORとMATCHで判定、TRUEなら存在しない、FALSEなら存在するのでVLOOKUPを実行 =IF(ISERROR(MATCH(A1,Sheet2!$A$1:$A$100,0)),"",VLOOKUP(A1,Sheet2!$A$1:$D$100,3,FALSE)) ■COUNTIFで判定、0なら存在しない、1以上で存在するのでVLOOKUPを実行 =IF(COUNTIF(Sheet2!$A$1:$A$100,A1),VLOOKUP(A1,Sheet2!$A$1:$D$100,3,FALSE),"")

その他の回答 (3)

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

ご質問者のエクセルグレードがエクセル2007以上なら次の様な関数があります。 =IFERROR(VLOOKUP(~式~),"") エクセル2003以下ならば、既回答済みですが、私はCOUNTIF関数の利用をお勧めします。 =IF(COUNTIF(検索範囲,A1),VLOOKUP(~式~),"")

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>値があるかないかを区別する方法 あるかないかをまず調べればよいので,たとえばCOUNTIFで調べてみます。 作成例: =IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:C,3,FALSE),"")

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

例データ Sheet1 A列   Bれつは結果 B1の式 =IF(NOT(ISERROR(VLOOKUP(A1,Sheet2!$F$1:$G$14,2,FALSE))),"有り","なし") 下方向に式を複写。 A列データ行数以上にB列に式を入れていくなら =IF(A1="","",IF(NOT(ISERROR(VLOOKUP(A1,Sheet2!$F$1:$G$14,2,FALSE))),"有り","なし")) c 有り d 有り e なし 検索表 Sheet2に F1:G4 a 1 b 2 c 3 d 4 別ブックに検索表があるときは、 http://www.excel-jiten.net/formula/ref_other_books.html の最後の「直接数式を入力する」を見て勉強のこと。

関連するQ&A

  • Q:エクセルのVLOOKUPで・・・

    VLOOKUPでご相談させてください。 VLOOKUP(検索値, 範囲, 列番号, 検索の型)で、検索の型の部分を FALSEに指定した場合、検索値 と完全に一致する値だけが検索され、 見つからない場合は エラー値 #N/A が返されますが、見つからない 時にそのエラー値#N/Aを表示させずに空欄にさせたいのですが、そん なときどうしたらいいですか? if(VLOOKUP(検索値, 範囲, 列番号, 検索の型)<>"#N/A","○","") ではダメでした。検査値一致の場合には○を、検査値がなければ空欄 としたい表を作成したいのです。 アドバイスお願いします。

  • VLOOKUP関数 正しい値が返されない

    sheet1にデータリストを入力、sheet2のA1にコード番号を入力し以下の表にSheet1の対象データを参照するというところ(VLOOKUP関数のみ)まではよかったのですが、元データに空欄の時は「データなし」と表示過去の質問を参照して下のような式に変更しました。 =IF(ISERROR(VLOOKUP($A$1,範囲,列番号,"")),”データなし”,(VLOOKUP($A$1,範囲,列番号,FALSE))) はじめは正しく表示はされたのですが、A1に違う値を入力し直しても値が変化しません。 エラー表示はでませんが、数式がどこか間違っているのでしょうか。 どなたかお知恵をお貸しください。

  • エクセル、VLOOKUP関数について

    (1)セルAの値を他シートから検索 (2)セルAが空欄なら空欄を返す (3)セルAが空欄でなければ、その検索したセルの値を返す (4)検索したセルが空欄であればBを返す =IF(ISNA(VLOOKUP(A1,他シート!$B$4:$G$501,2,0)),"",IF(VLOOKUP(A1,他シート!$B$4:$G$501,2,0)="","B",VLOOKUP(A1,前年度成績!$B$4:$G$501,2,0))) という風にしたくて、上記の式を書きましたが、(4)の検索したセルが空欄であってもBが表示されません。 どこを直せば良いか、教えてください。

  • VLOOKUPとIFの組み合わせで困ってます

    シートが2枚あり、sheet1は工事記録一覧、sheet2は納品書です。 sheet2のセルA1に、工事記録の管理番号を入力し、 セルA2以降に、管理番号に該当する住所や建物名、 工事種類などを表示させたいと思ってます。 参考にするセルが空欄の場合には、空欄のままにしたいので、 IF関数とVLOOKUP関数を組み合わせて 下のように自分で式を組んでみましたが、#N/Aになってしまいます。 =IF(A1="","",VLOOKUP(A1,sheet1!A1:J20,3,FALSE) 同一シート内で同様の式を入れた時は、希望通りの答えが返ってきましたが、 別のシートだと上手くいきません。 どなたか正しい式をご教授いただけますでしょうか。 エクセル初心者で、ネットや本で調べながら作成しているので、 分かりやすく教えていただければ助かります。 どうぞよろしくお願いいたします!

  • VLOOKUPで

    Excel2000を使っています。 Sheet1のB列に=IF(ISBLANK(A1),"",VLOOKUP(A1,Sheet2!A1:C100,2,0)) Sheet1のC列に=IF(ISBLANK(A1),"",VLOOKUP(A1,Sheet2!A1:C100,3,0))を入れてあります。 Sheet2のA列にはコード番号、B列には氏名、C列には住所が入っています。 Sheet1のA列に番号を入力すると、B,C列に氏名、住所が表示される表を作りましたが、Sheet2にデータを追加したら番号を入力しても、追加したメンバーについては、エラー表示(#N/A)が出てしまいます。 コード番号は頭にゼロが付くので、Sheet1のA列は文字列、Sheet2はすべて文字列にしてあります。 最初はうまくいってたのですが、後から追加した分だけがエラーになります。他のリストからデータをコピーし、値のみを貼り付けてだめだったので、手入力してみたのですがやはりだめでした。検索範囲を超えていることは絶対にありません。 どうしてもわからないので、質問させていただきます。 心当たりございましたらよろしくお願いいたします。

  • Excel VlookupとIFのネストについて

    シートAでシートBの値をVlookupで引っ張っています。 ここで、値をそのまま返すだけではなく、値がはいっていれば●で返すようにしたいです。また、参照値がの列が空白の場合があり、エラーを表示させないようにもしたいのです。 =if(参照値="","",vlookup) これにどう足せば、完成できるのでしょうか? この形で考えているからいけないのでしょうか? 初歩的な質問ですが、よろしくお願いいたします。 (ネストはとっても苦手です・・・)

  • excelのvlookup関数で勝手に引用符がつく

    excelのvlookup関数を使ってあるシートを作っています。 「basedata」というシートに3列表をつくり、1番左にキー、2番目と3番目に値をいれ、この表を別シートから検索にいっています。 検索元のシートには 文字列 文字列からMID関数で切り出した数値 検索1 検索2 の4列があります。 やりたいことは2列目の切り出した数値を元にして、basedataのキーを検索しにいき、検索1の列にbasedataの2列目の値を、検索2に3列目の値をいれたいと思っています。 =IF(ISERROR(VLOOKUP(B2,basedata!A2:E56324,2,0))=TRUE,"",VLOOKUP(B2,basedata!A2:E56324,2,0)) という式を検索1のセルに入力した場合、何も表示されず、B2に実際に入っている値を引用符なしで直うちすると値が表示されます。ステップインで分析すると、参照にした場合、参照値が引用符で囲われており、これが原因かと思うのですが、何か回避方法はないでしょうか。

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  • Excel2003 IF関数

    シート1のA列に値を入力して行き、終了したら同じようにシート2のA列に値を入力して行きます。 この時、シート1に入力した値とシート2に入力した値は同じでなければなりません。 シート2は再チェック用なので、シート1と値が異なる入力をした場合、 値を入力するセル(A列)の隣のセル(B列)に、 IF関数、真の場合『OK』・偽の場合『入力エラー』と反映されるようにしております。 =IF(B1=seat!B1,"OK","入力エラー") 『OK』の場合は表示させる必要は無いので、条件書式を使用し、 フォント色を白くして、表示させないようにしております。 ただ、シート1を入力してからシート2に入力を始めるため、 シート2のB列には既にに『入力エラー』の表示がでてしまっています。 ※値を入力しないセルもあるのでその場合は『OK』が表示されますが、 条件書式によりフォント色を白くしておりますので、表示されません。 シート2には何も入力をしていないので、『入力エラー』と表示されるのは当然なのですが、 シート2に値を入力してから、シート1,2で異なる値の場合だけ『入力エラー』と表示されるのが理想です。 IF関数はこのような場合適していないのでしょうか? 何か良い方法がございましたらご教示頂けますと幸いです。 宜しくお願い致します。

  • IF、VLOOKUP関数

    (1)A4=IF(F4>0,"M-1"," ") A列にこの式をコピーすると全A列がM-1になるが、 A5は「M-2」、A6は「M-3」・・・ としたい。 (2)C4=VLOOKUP(C4,$C$5:$D$9,2) C4が空白の場合「#N/A」となるが、空欄にしたい。 以上二点、ご教授下さいm(__)m

専門家に質問してみよう