• ベストアンサー

こちらの関数式を考えて下さい (IF関数)

運送会社の料金表を作っています。 お客様のデータと共に運送料も入力しています。 そこで、重さと距離を入力すれば、運送料金が出るような関数を教えていただきたいと思います。 画像を参照ください。 入力するデータに重さ85 距離125を入れるとC2に参照データの1500が自動的に入る関数です。 参照するデータは重さ85の場合80以上100以下なので13行を、距離125は100以上200以下なのでE列を見て、E13の1500が該当します。よって入力するデータのC2は1500の数値が入ります。 同様に重さ45 距離70 ではD11の900が入ります。 C2欄に1500が、C3の欄に900が自動的に入る関数を教えてください。 よろしくお願いいたします。     

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

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

こんばんは! INDEX関数とMATCH関数の併用で出来ると思います。 だたし、画像の表は列・行とも降順に並べ替えておく必要があります。 (重さは上から100・80・60 距離は左から200・100・50)という具合にして・・・ C1セル=INDEX($C$11:$E$13,MATCH(A2,$A$11:$A$13,-1),MATCH(B2,$C$9:$E$9,-1)) としてみてください。 希望通りの表示になると思います。 尚、重さが100を超え、距離が200を超えた場合はデータがないので エラー表示になると思います。 ちなみに、重さ=80 の行は 60<重さ≦80の範囲です。 列も同様の考えです。 以上参考になれば幸いです。m(__)m

KandS
質問者

お礼

早速の回答ありがとうございます。 大変参考になりました。ありがとうございました。

その他の回答 (1)

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

素朴な疑問です。 通常、ランク間の値の場合、小さい側の基準になるのではないでしょうか、ご例示の料金算定ならば、私は絶対利用しません。 仮に重さ85の場合80以上100未満なので12行、距離125は100以上200未満なのでD列を見て、E13の1200ではないでしょうか。 一例です。(勝手ながら料金表は、4x4の構成としています) =IF(COUNT(A2:B2)=2,OFFSET($A$9,MATCH(MAX(A2,60),$A$9:$A$12,1)-1,MATCH(MAX(B2,50),$A$9:$D$9,1)-1),"")

KandS
質問者

お礼

鋭いご指摘ありがとうございます。 関数も今の私には高度でよく分かっていません。勉強不足なままの質問をしてしまい申し訳ございません。 ご回答ありがとうございました。

関連するQ&A