• ベストアンサー

エクセル関数 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列優先でも値が違います。

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

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

> =IF(D1="","",VLOOKUP(D1,A:C,3,1)) 最後の1を0にしましょう。そうすればA列をソートする必要がなく、 一致した行の値を返します。1の場合はA列を文字コード順でソート する必要があります。ふりがな順ではダメです。

usa08
質問者

お礼

早々のご回答ありがとうございます。 これで今日の午前中が無駄にならずに済みました!! 浅い知識だけではだめですね。 これからもっとしっかり勉強したいと思います。 ありがとうございました。

その他の回答 (3)

noname#96418
noname#96418
回答No.4

#3では、質問文にあった >入力規則でドロップダウンリストがら選択にしました。 をうっかり見逃していました。#3の最後の段落は取り消します。 すみません。

noname#96418
noname#96418
回答No.3

もしデータが質問の画面どおりであれば、A列が昇順になっていますから、うまく抽出されるはずです。 A列の みかん の前にスペースが入っていませんか?その場合は、315 が抽出されてしまうようです。理由はわかりません。 もし誤って前にスペースを付けて入力されたデータがあると、その商品に対しては、#1、#2さんの方法でも、C列の値をうまく抽出できないでしょう。

usa08
質問者

お礼

早々のご回答ありがとうございます。 前にスペースがあるとだめなんですね。 CSVデータをエクセルにして… 何って時だとありうるかもしれませんね! 大変参考になりました。 ありがとうございます。 お礼ポイントを差し上げず申し訳ございません。

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

>=IF(D1="","",VLOOKUP(D1,A:C,3,1)) ⇒VLOOKUPの検索型が1のTRUE指定となっている為、近似値を含め検索されています。  よって、FALSE指定の完全一致検索として下さい。  因みに指定ですが、1,0として認識されますが、TRUE、FALSEと指定した方が良いです。

usa08
質問者

お礼

早々のご回答ありがとうございます。 これで今日の午前中が無駄にならずに済みました!! 何も考えず、一致させたいから「1」と思っておりました。 今度はきちんと使い方覚えます。 今日中に完成させたいものでしたので、皆さんに頼ってしまいました。 早期解決できて本当に助かりました。 ありがとうございました。

関連するQ&A