2016-07-29 12 views
-1

数値が入っている範囲に基づいて異なる数式を適用しようとしています。Excel IFの式修正?

数が0-50kであれば50K-100Kあれば、別の式を適用し、1つの式を適用言い換えれば
=If(AND(B4>0,B4 < 50000), 0, IF(AND(B4>49999.99,B4 < 100000),((B4-50000)*0.0275*2/3), IF(AND(B4>99999.99,B4<150000),(B4*.02+1850),IF(AND(B4>149999.99,B4<250000),(B4*.07/3+2850),IF(B4>249999.99),(B4*.08/3+5185))))) 

、など

任意のアイデアそれを動作させるには?ありがとうございました!

+0

あなたが持っているものは何ですか?エラーは何ですか? – lurker

+0

あなたの数字はすべて正ですか? –

+0

不均衡な括弧。 '、IF(B4> 249999.99、(B4 * .08/3 + 5185))))))')のように終わるはずです。 – JNevill

答えて

3

デイジーチェーンif文が順番にそれらを見ると、真になると直ちにそれが見えなくなります。

これを考えると、ifとeveryをそれぞれブラケットする必要はありません。

=IF(B4 < 50000, 0, IF(B4 < 100000,(B4-50000)*0.0275*2/3, IF(B4<150000,B4*0.02+1850,IF(B4<250000,B4*0.07/3+2850,B4*0.08/3+5185)))) 

50000未満であれば、最初のものは真となり、残りの声明はExcelではなくなります。

数字が75000の場合、最初の文字はfalseとなり、次の文字は次の文字に移動します。

これを知っていると、水だけを濁らせるAND()を避けることができます。

最後の式はIF文がまったく必要ありません。 250000より大きい場合は、4つすべてがfalseになり、終了式が発生します。

2

数字だけを扱っているので、入れ子になったif()関数の代わりにブール演算を扱う方が簡単です。

このテクニックを使用すると、TRUEまたはFALSEのいずれかの条件があり、1または0と同じです。だから、のように書かれていたであろう私たちの条件:

If(condition, result_if_true) 

は、代わりに、同じように書くことでしょう:私たちのresult_if_trueはB4+1で、B4を例として5等しく、私たちの条件が真の場合

(condition*result_if_true) 

、その後:

(1*(B4+1))=(1*(5+1)) = 6 

は、そうでない場合は、我々が得る:

(0*(B4+1))=(0*(5+1)) = 0 

入れ子のif()の代わりに、(condition*result_if_true)文をまとめて追加できます。あなたのケースでは:

=(AND(B4>0,B4 < 50000) * 0) + (AND(B4>49999.99,B4 < 100000) * ((B4-50000)*0.0275*2/3)) + (AND(B4>99999.99,B4<150000) * (B4*.02+1850)) + (AND(B4>149999.99,B4<250000) * (B4*.07/3+2850)) + ((B4>249999.99) * (B4*.08/3+5185)) 

私は、これらの厄介な取得を開始したときに、数式バーに複数の行を使用したい:

=(AND(B4>0,B4 < 50000) * 0) + 
(AND(B4>49999.99,B4 < 100000) * ((B4-50000)*0.0275*2/3)) + 
(AND(B4>99999.99,B4<150000) * (B4*.02+1850)) + 
(AND(B4>149999.99,B4<250000) * (B4*.07/3+2850)) + 
((B4>249999.99) * (B4*.08/3+5185)) 

それはとてもあなたの開閉括弧を追跡するために、今多くの方が簡単ですあなたは大きな混乱に終わらない。また、Excel 2003では、IFを深く入れ子にすることができました。これはその周りの素晴らしい方法です。私は今あなたが64に行くことができ、神はあなたの魂に慈悲を与えるかもしれないと信じています。