- ベストアンサー
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%
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
=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/
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
$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&"%")
お礼
回答ありがとうございました。 色々な方法があるのですね。 参考にさせていただきます。
- takewan
- ベストアンサー率30% (4/13)
とりあえず、作ってみましたがこれで動きませんか? =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%)
お礼
回答ありがとうございました。 この数式で動きました。ありがとうございます。
お礼
ご丁寧な回答ありがとうございました。 この数式を試してみようと思います。