• ベストアンサー

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

専門家に質問してみよう