• ベストアンサー

IF関数

IF関数で下記のような式を作って見ましたがうまく答えが返ってきません。 条件は P9<=135416 の時は(P9-117501)×0.05 135417<=P9<=149999の時は(P9-(P9×0.4+63334))×0.05 150000<=P9<=299000の時は(P9-(P9×0.3+78334))0.05 で、一の位を四捨五入します。 135417以上になると0の答えが返ってきます。 式は次の通りです。 =IF(P9<=135416,ROUND((P9-117501)*0.005,IF(135417<=P9<=149999,ROUND((P9-(P9*0.4+63334))*0.005,IF(150000<=P9<=299000,ROUND((P9-(P9*0.3+78334))*0.005,0))))))*10 どこが間違っているのでしょか?宜しくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

135417<=P9<=149999 という書き方はできません。等式、不等式は2項しか書けないのです。 上の式はAND関数を使って AND(135417<=P9,P9<=149999) と表すことができますが、その前にIF関数のP9<=135416の条件がFALSEのときに、こちらの式が評価されるので、135417<=P9の条件は必然的に書く必要はありません。 150000<=P9<=299000 も同様です。 それから、一の位を四捨五入するときは、ROUND(数,-1)と書けばよいです。最終的な結果を四捨五入したいのであれば、IF文の中にROUNDを書くのでなく、IF文全体をROUNDで囲んでやればいいと思います。 また、どの条件でも×0.05は共通しているので、それも外に出せばいいと思います。 したがって上の式は、 =ROUND(IF(P9<=135416,P9-117501,IF(P9<=149999,P9-(P9*0.4+63334),IF(P9<=299000,P9-(P9*0.3+78334),0)))*0.05,-1) と書くことができます。

syakutori64
質問者

お礼

ありがとうございました。 とてもよく解りました。まだまだ関数の勉強不足です。 がんばります。

その他の回答 (4)

回答No.4

135417<=P9<=149999とかってところが良くないような。 AND(135417<=P9,P9<=149999) というようにしないといけないような気がする。 =IF(P9<=135416,ROUND((P9-117501)*0.05,-1),IF(AND(135417<=P9,P9<=149999),ROUND(P9-(P9*0.4+63334)*0.05,-1),IF(AND(150000<=P9,P9<=299000),ROUND(P9-(P9*0.3+78334)*0.05,-1)))) でいいのかな。ROUND関数にも手を入れるともっといいかも。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

IF文の前の条件で処理されるため短くできるもの 【誤】135417<=P9<=149999 →【正】P9<=149999 【誤】150000<=P9<=299000 →【正】P9<=299000 数式で()を外せば短くなるもの P9-(P9*0.4+63334) → P9*0.6-63334 P9-(P9*0.3+78334) → P9*0.7-78334 あとROUND(数式,-1)で一の位を四捨五入できます。 まあ纏めるなら =ROUND(IF(P9<=135416,P9-117501,IF(P9<=149999,P9*0.6-6334,IF(P9<=299000,P9*0.7-78334,0))*0.05,-1)

syakutori64
質問者

お礼

ありがとうございました。 文を作る前に数式を整理しておくべきですね。

  • kady
  • ベストアンサー率26% (9/34)
回答No.2

IF関数の論理式には複数の比較演算子は入れられませんので、 先ほどの式を基にすると =IF(P9<=135416,ROUND((P9-117501)*0.005,2),IF(P9<=149999,ROUND((P9-(P9*0.4+63334))*0.005,2),IF(P9<=299000,ROUND((P9-(P9*0.3+78334))*0.005,2),0)))*10 が正しいと思われます。 どうでしょう、自信ないですが。

  • yaburegasa
  • ベストアンサー率44% (596/1335)
回答No.1

IF関数の書き方から、EXCELの関数と理解しましたがよろしいでしょうか?! >どこが間違っているのでしょか? EXCELでIF関数を記述する時の、条件式は 135417<=P9<=149999 という様な書き方はできません。 必要に応じて、IF入れ子構造にするか、AND関数等をご使用ください。

関連するQ&A