• ベストアンサー

こちらの関数式を考えて下さい (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が自動的に入る関数を教えてください。 よろしくお願いいたします。     

  • KandS
  • お礼率94% (50/53)

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

  • ベストアンサー
  • 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

  • IF関数

    みなさん教えてください。 下記のIF関数で、正確な数値が出ません。ドコを訂正すればよろしいでしょうか?Vlookupだと参照する数値を入力する必要がある為、IF関数で入力したいと思っております。 検索値(E3) 計算式 これ以下 引数 1000 9700 3000 17500 5000 21000 10000 26900 15000 35300 20000 43600 25000 51300 30000 59400 35000 67300 40000 75300 45000 83500 50000 91400 55000 99500 60000 106600 これは数値がおかしくなって駄目でした。 =IF(E3<1000,IF(E3<3000,IF(E3<5000,IF(E3<10000,IF(E3<15000,9700,17500),21000),26900),35300),IF(E3>20000,IF(E3>25000,IF(E3>30000,IF(E3>35000,IF(E3>40000,43600,51300),59400),67300),75300),IF(E3>45000,IF(E3>50000,IF(E3>55000,IF(E3>60000,83500,91400),99500),106600)))

  • IF関数の使い方

    以下の状況にて、実現したいことを可能にする関数をご教示いただければ大変助かります。 【状況】 B列に海外の現地時間、C列に日本時間に変更した時間、E列に該当国をセットしています。 【実現したいこと】 E列に記入された国に応じて、B列の時間を日本時間に直してC列に表示したい。 (現在、E列に記入される国数は5つです。) 【例】 今は、E2に入力された国がUKであれば、C2に =B2+"8:00" E10にUSAと入力する場合は、C10に =B10+"16:00" と言った形で手入力しております。 よろしくお願いいたします。

  • IF関数で出来ないのかな?

    E13のセルにa,i,u,e,oが入力されたら、AA2:AA28から参照してZ2:Z28を現す事は以下の式でやっとこさ出来ました。 =IF(E13="a",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13:E13="i",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="u",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="e",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="o",(LOOKUP(E13,AA2:AA28,Z2:Z28)),""))))) が!!! 今度はその逆でE13のセルにa,i,u,e,o以外が入力されたらAA2:AA28から参照してZ2:Z28を現す事が出来ません!! NOT関数で出来ると思って以下の式を作ったんですけど、 =IF(NOT(E13="a"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="i"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="u"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="e"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="o"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),""))))) これだと何故かa,i,u,e,oを含め全てで参照して表してしまいます。 また他にも IF(C13="i",IF(C13="u",IF(C13="e",IF(C13="o","",(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))), (LOOKUP(C13,AA2:AA28,Z2:Z28))) というようにNOT関数を使わずに"真"と"偽"逆にしてみたんですけど 結果はNOT関数と同じでした。 なぜ?分らない・・・。 とりあえずa,i,u,e,o以外が入力されたらAA2:AA28から参照してZ2:Z28を現す方法を教えて下さい。 そして余裕があれば、NOT関数と"真"と"偽"逆にした時に全てで参照して表してしまうのかも教えて欲しいっす!! ちなみにE13=MID(B3,2,1)となっていて、B3にある文字列から一文字抜いた状態です。

  • IF関数について教えてください。

    IF関数について教えてください。    A    B    C    D     1              ここの関数     この場合D1の数式をご教授お願いします。   もしA1に数値を入力した場合は「C1+A1」、もしB1に数値を入力した場合は「C1-B1」   おそらく2つのIFがあるのはわかるのですができません。      よろしくお願いいたします。

  • Excelで、IF関数を使用して空欄にしたところの数値を使用したいのですが

    Excel初心者です かなり特別なケースだと思うのですが IF関数を使って、{上と同じ数値なら空欄、そうでない場合は計算結果を表示} というのを、 E9 =IF(SUM(E8,C9)-D9=E8,"",SUM(E8,C9)-D9) という関数を使って作ってみました。 仮に、下のような数値の並びの場合 1 22 333 333 4444 4444 4444 55555 という場合 1 22 333 4444 55555 というように表示したいのですが この関数を見ていただくとわかるとおり 一つ上の数値を参照して計算するため 空欄であれば、そのセルの数値を”0”として認識してしまい 下の計算結果がハチャメチャなものになってしまいます。 空欄を表示しても、数値は参照したい というような場合、どのようにしたらいいのでしょうか もしくは、上の関数を使用した場合 E8が空欄の場合はE7の数値、E7も空欄の場合E6を参照する、というやり方はあるのでしょうか。 自分でも調べてみたのですが、同じようなケースの質問がなかったため質問させていただきました。 どうぞよろしくお願いいたします。

  • エクセルのif関数のエラー

    エクセルでif関数を使ってデータ処理をしたのですが、上手くいき ません。何がおかしいのかが分からない状態で困っています。 状況  A B C D E 1 : + = ? 関数式 とセルに入力してあるとします。(A1=:,B1=+,C1==,D1=?) 関数式のセルに以下の様に入力しました。 =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) 目的はVLOOKUPだけではD1が空白の時にE1にNAMEと表示されるのを 避ける事でした。 そうすうとD1にA列の数字を入力すると、それに対するB列をE1に 表示するようになるのですが、D1が空白の時はB1が表示されて しまってます。  また一旦D1に入力した後、D1をデリートして空白にしてもE1には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

  • ExcelのIF式の入力について大いに悩んでいます。

    皆様の迅速な回答に感謝しています。 今回は、以下の事柄について教えて頂きたいです。 質問例 あるセルに区分に従って結果を表示させる方法。 同じシートの印刷範囲外にデータ表を下記の如く作っているとします。 AA1列にIからIVの文字表示 AB1列に5以下のIからIVに該当する数値を表示 AC1列に5~10のIからIVに該当する「計算式」数値を表示 AD1列に10以上のIからIVに該当する数値を表示 のデータ表を作っていたとします。 A1に区分IからIVの文字を入力 A2に数値(小数点以下3桁表示)を入力 A3に該当する区分に従って該当する数値を表示したい場合についてのIF式を教えてください。 AC列のIからIVに該当する「計算式」は、以下のとおり =AB2-(AD2-AB2)/(5-10)*(A2-5) といれています。 先の質問で教えて頂いた、IF式=IF(A2="","",INDEX(AA1:AD5,MATCH(A2,AA1:AA5,0),?))を利用して作ってみたものの、5以下、10以上の時に正解が表示できなくて大変困っています。 なにとぞご指導を宜しくお願い致します。

  • エクセルIF関数で

    IF関数で真の場合はあるデーターを自動入力しまして、そして偽の場合の件で質問なのですが、 そのセルに偽の場合は手入力したいというばあい、 いったいどう関数を入力したらよいでしょうか? ちなみに手入力したいのはアルファベットの文字群です。 =IF(E3="","",○○○) E3が空欄ならば空欄にせよ!そうでなければ・・・○○ この○○の部分にどのように入力したらそのセルが手入力可能になるのでしょうか? 仕事で早急に使うのでもしおわかりの方いらっしゃればどうか教えてくださいませ。 それともこういう関数は無理でしょうか?

  • エクセルの数式について教えてください。IF関数?

    在庫表から、在庫不足分を把握して、不足数に対して一定数を加えた数量を表示させ、増産必要数を求めるための数式で困っています。 例えば、現在在庫(A)が50個あります。今後出庫予定(B)が200個ある場合、当然-150個(C)になります。 この-150個に対して、一定数値50個(D)を加えると、製作必要数が200個(E)になるのですが、それをエクセルの数式で自動計算できるようにしたいです。 単純に考えれば、A-BでCが表示され、C+DでEになるのですが、C欄がマイナスの場合は、Eを出すためには、(C*-1)+Dの計算が必要で、C欄が+であれば、単純にC+Dで求めるEの数が出ます。 つまり、C欄が+でも、-でも、このE欄を自動計算できる数式の作り方がわかりません。 どなたか作り方をご存知でしたら教えてください。 よろしくお願いいたします。

  • エクセル 関数について

    入力データ A1~A10に数値10 B1~B20に数値20 C1~C10に数値30が入力されています 質問 A1~C10の範囲内から、E1に数値 0~10の個数、E2に数値11~20の個数、E3に数値21~30の個数、 E4に数値10~30以外の個数を関数を使って計算させるには、どのようにしたらよいのでしょうか? 現在 COUNT、COUNTIF、FREQUENCYを使ってみたのですが、、、うまくいきませんでした。 何か良い アドバイスを下さい 宜しくお願い致します

専門家に質問してみよう