- ベストアンサー
エクセル関数 VLOOKUPで
エクセル2007です A列に商品名 B列に価格 C列に税込価格(B1*1.05) の表があります。 A B C |いちご|900|945| |みかん|300|315| D1にA列の商品名を選択して入力できるように 入力規則でドロップダウンリストがら選択にしました。 (範囲はA列です) E1には商品名を選択すると税込金額が反映されるようにしたいので、 =IF(D1="","",VLOOKUP(D1,A:C,3,1)) と入力しました。 D E D E 正 |いちご|945| → 誤 |いちご|315| D1の商品名と同行の3列目の値を返す…とやりたかったのですが、 別の行の値を返します。(C列の値であることは確かなのですが…) なぜでしょうか? また、テーブルを昇順で表示とあるのですが、優先はどの列でしょうか? A列優先でもD列優先でも値が違います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> =IF(D1="","",VLOOKUP(D1,A:C,3,1)) 最後の1を0にしましょう。そうすればA列をソートする必要がなく、 一致した行の値を返します。1の場合はA列を文字コード順でソート する必要があります。ふりがな順ではダメです。
その他の回答 (3)
#3では、質問文にあった >入力規則でドロップダウンリストがら選択にしました。 をうっかり見逃していました。#3の最後の段落は取り消します。 すみません。
もしデータが質問の画面どおりであれば、A列が昇順になっていますから、うまく抽出されるはずです。 A列の みかん の前にスペースが入っていませんか?その場合は、315 が抽出されてしまうようです。理由はわかりません。 もし誤って前にスペースを付けて入力されたデータがあると、その商品に対しては、#1、#2さんの方法でも、C列の値をうまく抽出できないでしょう。
お礼
早々のご回答ありがとうございます。 前にスペースがあるとだめなんですね。 CSVデータをエクセルにして… 何って時だとありうるかもしれませんね! 大変参考になりました。 ありがとうございます。 お礼ポイントを差し上げず申し訳ございません。
- mu2011
- ベストアンサー率38% (1910/4994)
>=IF(D1="","",VLOOKUP(D1,A:C,3,1)) ⇒VLOOKUPの検索型が1のTRUE指定となっている為、近似値を含め検索されています。 よって、FALSE指定の完全一致検索として下さい。 因みに指定ですが、1,0として認識されますが、TRUE、FALSEと指定した方が良いです。
お礼
早々のご回答ありがとうございます。 これで今日の午前中が無駄にならずに済みました!! 何も考えず、一致させたいから「1」と思っておりました。 今度はきちんと使い方覚えます。 今日中に完成させたいものでしたので、皆さんに頼ってしまいました。 早期解決できて本当に助かりました。 ありがとうございました。
お礼
早々のご回答ありがとうございます。 これで今日の午前中が無駄にならずに済みました!! 浅い知識だけではだめですね。 これからもっとしっかり勉強したいと思います。 ありがとうございました。