• 締切済み

EXCELのIF関数の条件分岐について

基本使用量が8以下の場合は1620円のみですが、 基本使用量が8以上の場合、超過分として、使用料に応じて計算が変わってくる条件分岐をIF関数で考えています。 基本使用量8~30まで→(今月使用料-8)×160円      31~50まで→(今月使用料-8)×220円      51~→(今月使用料-8)×330円 こういったものを、基本使用料金と、従量料金と別項目として 表示させたい場合、どのような関数を書けばよいか教えてください。 お願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

およそこういうパターンはVLOOKUP関数のTRUR型が向いていると思っています。 下記でやってみて、使うと障害(カバーできない仕様点)があるかどうか考えてみてください。 >8以下の場合は1620円のみですが、基本使用量が8以上の場合、超過分として、・・など「以上」の使い方に質問者に不安を覚えるので、いちばんよく知っている人=質問者に任せます。 「引く表」(ルール表というか)を作る。どこでも良いが仮に(別シートでも可能) G1:H4に 0 0 0 9 8 160 31 8 220 51 8 330 ーー テスト用にA列に1-55ぐらいまでの連続数をオートフィルで作る(0からが良いのかも) B1に =VLOOKUP(A1,$G$1:$I$4,2,TRUE) C1に =VLOOKUP(A1,$G$1:$I$4,3,TRUE) と入れて、B1:C1をB55:C55などに式を複写する。 D1に式 =(A1-B1)*C1 を入れてD55まで式を複写する。 あと基本料金をE列に入れる。 ーー 結果 A1:E55の一部 1 0 0 0 1620 2 0 0 0 1620 3 0 0 0 1620 4 0 0 0 1620 5 0 0 0 1620 6 0 0 0 1620 7 0 0 0 1620 8 0 0 0 1620 9 8 160 160 1620 10 8 160 320 1620 11 8 160 480 1620 12 8 160 640 1620 13 8 160 800 1620 14 8 160 960 1620 15 8 160 1120 1620 16 8 160 1280 1620 17 8 160 1440 1620 18 8 160 1600 1620 19 8 160 1760 1620 20 8 160 1920 1620 21 8 160 2080 1620 22 8 160 2240 1620 23 8 160 2400 1620 24 8 160 2560 1620 25 8 160 2720 1620 26 8 160 2880 1620 27 8 160 3040 1620 28 8 160 3200 1620 29 8 160 3360 1620 30 8 160 3520 1620 31 8 220 5060 1620 32 8 220 5280 1620 ーー 上記では、説明のため列を分けていますが、1セルの式にまとめられルのはご存知と思います。 上記の体系(特に基本料金の扱い)でよいと思うが、質問表現が 厳密でなく、私の質問のとり方がまちがっているかも知れない。 区切りである9、31,51は、以上・以下・未満・越えるなどの点から、上記結果表をみて、プラマイ1ほど修正が必要かもしれない。 ーー なぜIFを使わないか (1)勉強の進歩がとまる。過去質問を見ていると初心者は必ずIFで質問してくる。 (2)IFを重ねると、仕組みが浮かび上がらない。第3者が見て   すぐには良くわからない。VLOOKUPも知らない人には同じかも知れないが。 文章やIF関数では浮かび上がりにくい構造があらわになる。 (3)テストがVLOOKUPの方がアンシン。区間の間はまず余りエラーが 起こらない。区間前後だけ神経を使って表を作って置けばよい。 IFはそうでも無いと思う。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.5

IF関数を使って、 従量料金を別項目 として計算する場合の一例です。 A2セルに今月使用量が入力されているとしたら、 例えば、B2セルに =IF(A2<8,0,IF(A2<31,(A2-8)*160,IF(A2<51,(A2-8)*220,(A2-8)*330))) とすれば、従量料金が計算できます。 余談ですが、 IF文の条件分岐が多くなると間違いやすいので、 エクセル上では、「Alt」+「Enter」で改行させながら入力 するといいですよ。 <イメージ> =IF(A2<8,0,  IF(A2<31,(A2-8)*160,   IF(A2<51,(A2-8)*220,        (A2-8)*330))) ただし、分岐があまりに多くなる場合は、#1さんのように VLOOKUP関数を使う方が良いと思いますよ。 もちろん、シート上に料金リストを作成して範囲を参照しても 良いかと思います。

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.4

無理やりIF文で書くと、例えばこうなります 基本料金は別セル表示として =IF(A1>50,13860+(A1-50)*330,IF(A1>30,4840+(A1-30)*220,IF((A1>8),(A1-8)*160,0))) 税金の速算控除みたいな考え方を使えば、IF文で処理可能です。 でも、#1さんのようにlookupを使うのがスマートですよね。 #2さんの疑問ももっともで、電気料金の場合は、各ゾーン毎に料金を計算するようになってます。 たとえば、8-30の分は@160、31-50の分は@220という感じです。 この場合は、上記IF文の中の定数部分を修正すれば対応可能です。

回答No.3

50と51の間もですね。不思議な料金体系です。 50: 9240 51: 14190

noname#40742
noname#40742
回答No.2

#1さんの式を検証していて思ったのですが、 30:5140円 31:6680円 節目でバーンと跳ね上がってしまうのですが、 質問者さん、これはこれで正しいのでしょうか?

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

一例ですが、8以下、9~30、31~50、51以上として次の方法は如何でしょうか。 =1620+($A1-8)*LOOKUP($A1,{0,9,31,51},{0,160,220,330})

chaa0417
質問者

お礼

あ~~!! できましたっ。ありがとうございました。 LOOKUP関数っていうのですか?ちょっと調べてみます。 助かりました。感謝しています。

関連するQ&A

  • IF関数の条件分岐について

    基本使用量が8以下の場合は1620円のみですが、 基本使用量が8以上の場合、超過分として、使用料に応じて計算が変わってくる条件分岐をIF関数で考えています。 基本使用量8~30まで→(今月使用料-8)×160円      31~50まで→(今月使用料-8)×220円      51~→(今月使用料-8)×330円 こういったものを、基本使用料金と、従量料金と別項目として 表示させたい場合、どのような関数を書けばよいか教えてください。 お願いします。       

  • IF関数 複数条件分岐について

    IF関数の複数条件分岐について質問です(> <)。 F15に以下の条件にあわせて計算されるように条件式を入れたいのですが・・・ IF(AND(F9>=1800,F9<3599),70%*F9-180),IF(AND(F9>=3600,F9<6599),80%*F9-540),IF(AND(F9>=6600,F9<9999),90%*F9-1200) と入力するとエラーになってしまいます。 なぜでしょうか?正しい計算式を教えてください!! ~*条件*~ ・F9が 1,800円~3,599,円→F9×70%-180円     3,600,円~6,599,円→F9×80%-540円     6,600,円~9,999,円→F9×90%-1,200円

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • エクセルで条件に合う内容を参照させるようにするには?

    たとえば、電気使用量などを入力したら、 瞬時に、それに対応する料金が計算されるように、 設定する条件抽出関数はありますか? 使用量にしたがって、かなりの項目(数十段階)に 分かれているので、if条件を連結させていったら、とんでもない 長さになってしまい、どうしてよいか分かりません。 よろしくアドバイス願います。

  • IF関数の複数分岐

    IF関数の複数分岐について質問です。 条件が多すぎて私の知識では手に負えない状態なので、どなたか教えてくださると助かります。 ・A1が○だったら● ・A1が△、かつB1が▽だったら▲÷2 ・A1が△、かつB1が□だったら▲÷4 ・上記のどれにも当てはまらない場合は0 この条件でどうにかifでクリアできませんでしょうか? それに加えて、求められた値を四捨五入し1000の位で丸めたい(単位を千)にしたいのです。 どなたか宜しくお願いいたします。

  • エクセル 関数 条件分岐

    いつも回答して頂き、とても感謝しています。 前回、質問して回答して頂いたのですが、新たに分岐(アルミ1、アルミ2、アルミ3)が生まれたので質問します。 前回に教えて頂いた関数式が以下の通りです。 =SUMPRODUCT(SUMIF($B$4:$B$13,B17:B23,IF(ISNA(MATCH("天井交換",B17:B23,0)),$D$4:$D$13,$C$4:$C$13))) B17セルに、アルミ1と入れた時、条件1または条件2の列が参照して、計算される。 B17セルに、アルミ2と入れた時、条件3または条件4の列が参照して、計算される。 B17セルに、アルミ3と入れた時、条件5または条件6の列が参照して、計算される。 様にしたいのですが、どうすればよろしいのでしょうか? 御指導の程宜しくお願い致します。

  • IF関数

    Window98を使用しております。エクセルに関してですが、基本的な事ですいません。IF関数で、条件が3つある場合、例えば100000以上が達成、80000以上が努力、80000未満が検討という場合関数を使用して最初の論理式の所で、>=100000と入力しまして、その後、真の場合の所で、達成と入力、そして、最後の偽の所で、もう一度IFを使用したのですが、それを押すと・+if(if()となってしまい。また一旦閉じて計算式の所で、IFを押したら+ifとなって、余分な+がついてしまいました。設定方法が悪いのか?入力の仕方が悪いのか?どうすればいいのか教えてください。

  • エクセルの条件分岐で困っています

    条件分岐での質問です。 =IF(AND(基礎データ!$D$5="3",$AH$10="名 前"),IF(VLOOKUP($BN$1,optionalA,12)=0,"",VLOOKUP($BN$1,optionalA,12)),"") という関数をつくりました。じつはこれではまだ未完成です。 もし「optionalA」にあてはまる条件がなければ「optionalB」を参照しにいき,「optionalB」にあてはまる条件があれば条件を返し,「optionalB」にあてはまる条件がなければさらに「optionalC」を参照しに行って,あてははまる条件を返すという式を作りたいのですが,この先どうやって関数を書けばよいのでしょうか?どなたか教えてください。

  • EXCELの複数条件式で、途中から条件が変わる場合

    マンションの管理をしており、水道料金をどうにか条件式で簡単に算出できないか苦戦している者です。 水道の使用量が1~10立方メートルが2140円、11~20立方メートルが2450円、その後は21立方メートル=2560円、22立法メートル=2680円・・・・などと80立法メートルまで金額が変化しますが、一定の値で上がっていかないので、それぞれの対応値を入れようかと最初、IF関数の入れ子形式で計算できると思っていたら、項目が多すぎて8項目以降はエラーになってしまいます。 項目数は、60程になりますが、このような場合の条件式をどう設定したら良いのかお分かりになる方、どうか教えてください。手計算していたのですが、部屋数が多く、間違えてばかりになってしまい、困っています。 どうぞお力を貸してください。

  • LPガスの明細の指針とご使用量の違い

    たとえばある明細(検針票)に 「今回指針」97m3 「ご使用量」1m3 「ガス料金」2.300円 とあります。 「毎月のガス料金」=「基本料金」+「従量料金(毎月のご使用量×従量単価)」 という計算式ということですが、 従量料金が「ご使用量」1m3なのでしょうか? また、この検針票には「基本料金」という項目はありませんが、基本料金は「ご使用量」なのでしょうか? 指針とご使用量が、従量料金、またはご使用量のそれぞれどちらなのでしょうか?

専門家に質問してみよう