• ベストアンサー

エクセルでプルダウンして値を変更する方法は?

以下の画像のように、 プルダウンで商品名(D2)を変更した際に、 その価格(E2)も合わせて変更する方法を教えてください。

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

  • ベストアンサー
  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.3

A列にかぶりがあるとも思えないし =SUMIF(A:A,D2,B:B) でいいです。

GIGAmegane
質問者

お礼

一番シンプルで分かりやすかったです!他の回答者様もありがとうございました

その他の回答 (4)

  • mr_green
  • ベストアンサー率0% (0/1)
回答No.5

No4です。度々すいません。 念のために ご提案させて頂いているLOOKUP関数ですが、ご存じかも解りませんが 検査範囲の値(商品名)が昇順に並んでいる必要があります。 例に掲げられていたものが昇順でしたので安易にご提案させて頂きましたが 実際値が異なる場合は、商品名を昇順に並び替える作業が必要になります。 並び替えが難しい場合などは他の方も掲げられていますVLOOKUP関数が容易かと ちなみにデータ量可変で品名欄空白対策で =IFERROR(VLOOKUP($D$2,OFFSET($A$1,1,,COUNTA($A$1:$A$100)-1,2),2,0),"")

  • mr_green
  • ベストアンサー率0% (0/1)
回答No.4

他の回答者の方々の方法でご解決されている事かとも思いますが ご参考になれば・・・ 状況が少し解かりかねますが、商品名の価格をD2の値(商品名)を選択すると E2にその価格のみが表示されるようにされたいだけでしたら、 商品名に重複がないのならE2セルに =IFERROR(LOOKUP($D2,A:A,B:B),"") こちらで可能だと思います。 商品名別の合計となるとSUMIF等必要になります。 ちなみに、D2でのドロップダウンリストの入力規則には 項目の増加に対応して =OFFSET($A$1,1,,COUNTA(A:A)-1,1) =OFFSET($A$1,1,,SUMPRODUCT((LEN($A:$A)>0)*1)-1,1) などなど ご提案させて頂いている数式はどちらも、A列B列全体としています。 動作が重たくなるのを懸念される場合はA1:A100など多少増加の余裕をみて ある程度の範囲にされると良いと思います。

noname#204879
noname#204879
回答No.2

E2: =IF(D2="","",VLOOKUP(D2,$A$2:$B$4,2,FALSE))

回答No.1

他の高度な方法があるかもですが、私がよくやる方法を。 価格のセル(画像ではE2)に関数式を導入します。「IF関数式」ですね。 セルD2の候補が「日用品」、「食料品」、「衣類」で、価格がそれぞれ、1400、1000、3000だったとした場合、セルE2には次のように入力します。 =if(D2="日用品",1400,if(D2="食料品",1000,if(D2="衣類",3000,0))) 上記を言葉で表すなら、「もしD2が日用品なら1400を、そうでなくD2が食料品なら1000を、そうでもなくD2が衣類なら3000、どれでもないなら0を」ということですね。 if(条件,条件が真の場合にこのセルに入れる値,条件が否の場合にこのセルに入れる値)が基本形。 更に条件が否の場合にこのセルに入れる値の部分に次のif式を追加することでどんどん繋げていけます。 上記をそれを3つ繋げたパターンです。 補足ですが、上記の場合、セルD2が空白の場合は0が入りますが、D2が空白のときはE2も空白にしたい場合は、 =if(D2="","",if(D2="日用品",1400,if(D2="食料品",1000,if(D2="衣類",3000,0)))) D2="","" この部分が「D2が空白のときはE2も空白」という意味ですね。 ちなみに""は空白の意味で、関数式では数値以外の文字(空白も文字扱い)は""でくくる必要があります。 なので「日用品」や「食料品」も関数式内では「"日用品"」、「"食料品"」とする必要があります。 ただ関数式は難点が一つ。 セルD2の候補が多くなると、E2に入る関数式が非常に長くなるということです。 更にD2のようなセルが他にもたくさんあると、ファイルが重くなるということですね。 以上

関連するQ&A

専門家に質問してみよう