• ベストアンサー

VLOOKUP関数、検索値が範囲に無い場合

A列に商品コードを書いたシートがあります。 B列に納入率を"Sheet2"からVLOOKUPで呼び出す場合、 B2には下記のような数式を入れましたが、うまく表示されません。 =IF($A2=Sheet2!$A$1:$A$6,VLOOKUP($A2,Sheet2!$A$1:$B$6,2,FALSE),65&"%") 求めたいのは、D,Eの場合はそれぞれ納入率○%、 それ以外の場合は、65%ですが、上記の数式では、全て65%で表示されてしまいます。 どの部分がおかしいのかご指摘をお願いします。 ・納入率65%以外のものが少なく、それ以外の商品コードが大量にあるため、できれば全商品コードのマスタは作成したくない。 ・今後、納入率65%以外が増えることを想定している(最大20個くらい)、のでIF関数では対応できない(ネストが7個までのため)。 "Sheet1"    A       B 1 商品コード 納入率 2   A       3   B       4   C       5   D       6   E     "Sheet2"   A   B 1  D  60% 2  E  70%           ※DE以外は65%

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

  • ベストアンサー
回答No.2

=IF(ISERROR(VLOOKUP($A2,Sheet2!$A$1:$B$6,2,FALSE))=FALSE,VLOOKUP($A2,Sheet2!$A$1:$B$6,2,FALSE),65&"%") にしてはどうでしょうか? $A2=Sheet2!$A$1:$A$6 では、一致するものがあるかどうかの確認ができないので、VLOOKUP関数で一致するものを探してエラーが出なければ、VLOOKUP($A2,Sheet2!$A$1:$B$6,2,FALSE)を、そうでなければ65%を返させてます。 最後の65&"%"は、0.65の方がよいかもしれないですね。 http://pc.nikkeibp.co.jp/article/NPC/20070522/271846/

miyabi08
質問者

お礼

ご丁寧な回答ありがとうございました。 この数式を試してみようと思います。

その他の回答 (2)

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

$A2=Sheet2!$A$1:$A$6の部分が配列であり、IF関数ではできません。 次の方法は如何でしょうか。 =IF(COUNTIF(Sheet2!$A$1:$A$6,$A2),VLOOKUP($A2,Sheet2!$A$1:$B$6,2,FALSE),65&"%")

miyabi08
質問者

お礼

回答ありがとうございました。 色々な方法があるのですね。 参考にさせていただきます。

  • takewan
  • ベストアンサー率30% (4/13)
回答No.1

とりあえず、作ってみましたがこれで動きませんか? =IF((IF(ISERROR(MATCH(A2,Sheet2!A$2:A$3)),0,MATCH(A2,Sheet2!A$2:A$3)))>0,VLOOKUP(A2,Sheet2!A$2:B$3,2,FALSE),65%)

miyabi08
質問者

お礼

回答ありがとうございました。 この数式で動きました。ありがとうございます。

関連するQ&A

  • VLOOKUP関数(範囲を広げる場合)

    こんにちは。 VLOOKUP関数の事で教えてください! 最近何となくVLOOKUP関数の内容がわかってきた ところなのですが、以下の場合は、どのように したら良いものでしょうか・・ __|___A__|____B____|__C__| 1|地域1|地域2 |コード | 2|東京 |東京都 | 1 | 3|大阪 |大阪府 | 2 | 4|千葉 |千葉県 | 3 | 5|埼玉 |埼玉県 | 4 | 6|茨城 |茨城県 | 5 | (A1:C6を「範囲」として) たとえば[D2]に「大阪」または「大阪府」 どちらかの文字が入力された場合、 [E1]には[2](コード)と表示させる数式は はどのようにしたら良いのでしょうか。 「A列かつB列」という複数条件の数式は、 調べてみて分かったのですが「A列またはB列」 という条件の数式を教えて下さい! よろしくお願いします。

  • VLOOKUP関数の使い方について

    以前コード番号を入力すると自動的に商品番号が出るようにしたいと質問させていただきました。 教えていただいた方法を使い おかげさまでコード番号を入力すると隣のセルに商品番号が出るようになりました。 ただ一緒に単価も入力させたいのですがそれができません。 入力本体は(シート名 「仕入れ表」) E列 コード番号 F列 商品名 G列 数量 H列 単価 I列 小計(G*H) という構成になっています。 (A~C列は他の項目が入っています) 参照するシート名「cade」 同じブック内にあります。 A列コード番号 B列商品名 C列単価 が入っておりA~C列までを名前の定義で 「cade表」としてあります。 「仕入れ表」のI列(小計) の二行目より =IF(E2<>"",G2*H2,"") の数式がコピーしてあります。 同じく 「仕入れ表」のF列には =IF(E2<>"",VLOOKUP(E2,cade表,2,FALSE),"") と数式を入れました。 結果コード番号を入力すると商品名は出ますが 単価は入力されません。 単価も同時に入力する為にはどのようにしたらよろしいでしょうか? どなかた教えていただけると助かります。 宜しくお願い致します。

  • VLOOKUP関数について教えて下さい

    Excel97を使用しています。 VLOOKUP関数を使って二つのデータを照合したいのですが、 A    B     C    D    E        コード|内容 |    |コード |内容 | 0001 |ああ |ああ  |0001  |ああ | 0002 |ああ |    |0002  |   | 0003 |   |    0|0003  |   | D,E列の範囲からA列のコードを検索かけたいのですが、 =VLOOKUP(A2,ひかく,2,0)        ↑       D,E列 だと内容欄に空欄が入っていると0になってしまいます。 0でなく空欄にしたい場合はどうしたらよいのでしょうか?

  • エクセルのVLOOKUP関数の検索値が数式の場合について

    エクセルのVLOOKUP関数に悩んでいます。 どなたかご指導お願いいたします。 *--------------------------* A~F列 すべて書式が時刻です。 A、B列には数式で計算された時刻が入力されており、 C列はA列+B列という計算式がはいっています。 F列に=VLOOKUP(C列、D:E列、2、FALSE)というように C列を検索値とし、D列を参照し、E列にある時刻をF列に 設定したいのですが、結果が#N/Aになります。 例えばA,B列が数式ではなく入力した値であれば 検索値であるC列がA列+B列 でも結果はOKでした。 検索値は数式セル同士を足し算した数式は設定不可能なのでしょうか?

  • VLOOKUP関数で検索できません

    A列に勤務時間帯、B列に人数を入力したリストがあります。 E1にVLOOKUP関数を入力しましたがエラーになるので困っています。 A1 → 8:00~18:00  B1 = 5 A2 → 9:00~19:00  B2 = 7 D1 → 8:00~18:00 E1 → =VLOOKUP(D1,A1:B2,2,0) チルダを抜くと検索できるようになりますが、 VLOOKUP関数でチルダは使えないのでしょうか。 チルダありでも検索できるうまい方法があれば教えて下さい。

  • エクセルVLOOKUP関数でヒットしない数字

    A列    B列         D列     E列 CODE1    VLOOKUP    CODE2    NAME 01-A000  ああああ    01    ああああ 10-A123  #N/A      05    いいいい 20-B223  #N/A     10    うううう 30-C444  #N/A     15    ええええ AB-S455  きききき     18    おおおお A4-5554  くくくく     20    かかかか                 AB    きききき                 A4    くくくく                 以下略    以下略 のようなデータがあります。 A列のコード1の先頭2文字でD列をVLOOKUP検索します。 A列、B列ともに書式は文字列としています。 =VLOOKUP(LEFT(A2,2),$D$2:$E$29,2,0) という式をいれフィルドラッグすると先頭2文字が数字になるデータだけが01以外ヒットしません。 =VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0) とすると、ある程度解消するのですが、1をかけると1になってしまう01がヒットしなくなるのは当然として、それ以外の数字でもD列にあるのにヒットしない場合があります。 D列のデータに先頭にシングルクォーテーションを入れればすべて解決するのですがそれ以外に解決する方法はないでしょうか?

  • VLOOKUPの検索値の集計について

    複数シートのデータをVLOOKUPを使って、sheet1(B2~B50)に検索表示させ、更にその値を縦集計し、sheet1(B1)に表示させたいのですが、検索値が文字列のため集計ができません。 VLOOKUPの式に、文字列を数値に変換するように組み込む方法があれば教えてください。 (元データの表示形式は「標準」になっております。) sheet1(B2~B50)には、現在このような式を入れています↓ =IF(COUNTIF(sheet2!$A$2:$E$50,sheet1A!$2),VLOOKUP(sheet1!$A2,sheet2!$A$2:$E$50,2,FALSE)*1,"")&IF(COUNTIF(sheet3!$A$2:$E$50,sheet1!$A2),VLOOKUP(sheet1!$A2,sheet3!$A$2:$E$10,2,FALSE)*1,"")

  • エクセルのIF関数でVLOOKUPを論理式で

    こんにちは IF関数を勉強しています、過去の質問履歴のQNo.2489708を参考にさせて頂きましたが私の思うような結果が得られないので教えていただければと思います。 ■数式が=IF(A1="","",IF(VLOOKUP(A1,B3:B5,1,FALSE)=A1,C3,D3)) ■内容ですが 第1のIFで A1はブランクで真 偽の場合次のIF関数 第2のIFで 論理式を使い、A1の値がB3~B5の値と同じ場合と表現し       真の場合C3 偽の場合D3 C3のセルにはOK D3はNGと入っています ■結果  A1に入力した値とB3~B5の数字が合えば『OK』を返してくれるのですが  それ以外の場合のD3の値『NG』を返してくれなく#N/Aを返してきます。 数式がやはり違うのかなー  ■試した事  『OK』と『NG』をセルで指定しているのでここを単純に,"OK","NG"としてみましたが結果は同じでした・・・ ■合わせて  B3~B5のセル書式設定が文字列の場合(01234などの0を先頭に表示する場合セルの書式設定を文字列にしています)は特別な関数を入れ子するのでしょうか? ■いろいろ参考書を買って確認しましたが同じようなケースは無いようです。 ■VLOOKUPを使う理由  じつは、商品毎に別シートへ台帳を作り管理しています。  例えば、『シート名お菓子』に商品コードが無い場合『シート名飲料』を見に行く様にしたいのです。  商品はなるべくコード(数字)にしているのですが、0ゼロから始まる商品コードもあるので四苦八苦考えています・・・このIFとVLOOKUPを使うと幅が広がると思い夢を描いています。その他にMATCH関数でも考えましたが上手く結果が得られず困っています、どうぞ宜しくご教授ねがいます。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • VLOOKUP関数について教えてください。

    たとえば、「定期預金」という文字列をSHEET1から検索すると、セルA5に見つけたとします。 そしてそのセルから、右に3、下に10の位置にあるセル(D15)の数値を、SHEET2に表示させたい場合はどのような計算式を入れればいいのでしょうか? (B5だったらE15の数値というように) またこのような場合、VLOOKUP以外の関数のほうがよければ教えてください。よろしくお願いします。

専門家に質問してみよう