• ベストアンサー

Excel、関数に付いての質問です。

Excel、関数に付いての質問です。 度々の質問で申し訳ありません。 添付のエクセル表で、F4に価格を出したいのですが、どのようにしたら良いでしょうか? (A4の商品名をB4に「1」があるとき、D4の購入場所区分「1」の価格表から価格を出したい) A商店のみで購入する場合は「=IF(B4=1,VLOOKUP(A4,$H$4:$I$8,2,0),"")」で出していたのですが…。 INDEXや、MATCH関数の使い方の本も読んでみたのですが、完敗してしまいました。 分かりにくかったら申し訳ありません。補足させていただきます。 宜しくお願いします。

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

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

IF(B4=1,VLOOKUP(A4,$H$4:$I$8,2,0),"") を IF(B4=1,VLOOKUP(A4,$H$4:$K$8,D4+1,0),"") に変えてみてください。

nekozane
質問者

お礼

回答、ありがとうございます。 試してみたのですが、購入場所区分「2」(B商店等)で購入する場合金額が出てこなくなってしまいました。 IF関数の理論式ですが、D4が「1」だったら、I列から、「2」だったらJ列から…など、複数の条件づけってできないですよね? エクセルが不慣れで申し訳ないのですが、引き続きお教えいただけないでしょうか。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.2です! 前回は大きく外したようでごめんなさい。 オプションの列は「1」か「空白」のどちらかですよね? 憶測ですが、「★」の場合の数式や、「1」以外の場合などが必要になるのではないかと思いますけど、 もしかして、↓の数式のようなことですかね? F4セルに =IF(COUNTBLANK(A4:B4),"",INDEX($I$5:$K$8,MATCH(A4,$H$5:$H$8,0),D4)) としてオートフィルで下へコピーではどうでしょうか? 尚、この数式だとE列は必要なくなりますけど・・・ 以上、今回も外していたらごめんなさいね。m(__)m

nekozane
質問者

お礼

こちらの関数でもきちんと表示できました。 いつもありがとうございます。 とても助かりました。

nekozane
質問者

補足

皆様、ご回答いただきありがとうございます。 IF(B4=1,VLOOKUP(A4,$H$4:$K$8,D4+1,0),"") =IF(COUNTBLANK(A4:B4),"",INDEX($I$5:$K$8,MATCH(A4,$H$5:$H$8,0),D4)) という、二つの出し方があることが分かりました。 今回もとても助かりました。 ベストアンサーは一番最初にご回答いただいた方に差し上げたいと思います。

回答No.5

追記。   価格表の指定が「$H$4:$I$8」から「$H$4:$K$8」に変わっている(横に2列分広がっている)」事に注意して下さい。   3番目の引数を「2」から「D4+1」に変えただけでは価格表の指定が変なので「購入場所区分が2以上になったら変な動作」になります。

nekozane
質問者

お礼

3番目の引数で、列番号以外にも指定できるとは知りませんでした。(「D4+1」など) 詳しいご説明、ありがとうございます!!

回答No.4

VLOOKUPの3番目の引数は「検索表の何列目から値を取り出すか?」です。   3番目の引数を「セル参照を含む式」にすれば、参照したセルの中に入っている値により、表のどの位置から検索結果を取り出すか変わります。   D4セルに「1~3」の値が入っている場合 =IF(B4=1,VLOOKUP(A4,$H$4:$K$8,D4+1,0),"") と書くと、D4セルに入っている値によって、表から値を取り出す位置が変わります。   D4に「1」が入っていれば、D4+1は「2」ですから =IF(B4=1,VLOOKUP(A4,$H$4:$K$8,2,0),"") と同じ意味です。   D4に「2」が入っていれば、D4+1は「3」ですから =IF(B4=1,VLOOKUP(A4,$H$4:$K$8,3,0),"") と同じ意味です。   D4に「3」が入っていれば、D4+1は「4」ですから =IF(B4=1,VLOOKUP(A4,$H$4:$K$8,4,0),"") と同じ意味です。   こうすると「D4が1ならI列から、2ならJ列から、3ならK列から、価格を持ってくる」ようになります。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

> IF関数の理論式ですが、D4が「1」だったら、I列から、「2」だったらJ列から…など、複数の条件づけってできないですよね? そのために、範囲を$H$4:$I$8から$H$4:$K$8に変えて、2をD4+1に変えたんですけど、うまくいきませんでしたか?

nekozane
質問者

お礼

うまく動きました!! 範囲が「$H$4:$K$8」だったのですね。 ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 間違っていたらごめんなさい。 表内の「オプション」の意味が判らないのですが・・・ もしかしてこのような感じで良いのですかね? ↓の画像で説明します。 「商品名」と「購入場所」だけで表内の金額を表示させるようにしてみました。 C4セルに =IF(COUNTBLANK(A4:B4),"",INDEX($F$4:$H$7,MATCH(A4,$E$4:$E$7,0),MATCH(B4,$F$3:$H$3,0))) という数式を入れ、オートフィルで下へコピーすると、画像のような感じになります。 以上、的外れであったり余計なお世話だったらごめんなさいね。m(__)m

nekozane
質問者

お礼

ご回答ありがとうございます。 分かりにくいエクセルで申し訳ありません。 実は、「商品名」と「購入場所」だけで表内の金額を表示させる方法は前回別の質問でお教えいただいた事があるのです。 でもそれだと、商品名と購入場所を指定した途端に価格が出てしまうので、具合が悪いのです。 「商品名」の「購入場所」毎の価格を☆列に「1」のフラグがついたときに出したいと言ったらお分かりいただけるでしょうか?(☆や、★の価格表があるので、A列に「商品名」と項目を入れたのが間違えですかね?) よろしければ、引き続きお教えいただけないでしょうか? 宜しくお願い致します。

nekozane
質問者

補足

お礼欄は付け足せないので、こちらで失礼致します。 前回もご回答いただきありがとうございました。 今後とも宜しくお願い致します。

関連するQ&A