我正在尝试根据数字范围应用不同的公式。有人可以帮我纠正这个公式吗?
=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-50k,则应用一个公式,如果是50k-100k,则应用不同的公式等。
任何想法如何使它工作?谢谢!
答案 0 :(得分:3)
菊花链时如果语句excel将按顺序查看它们,一旦一个为真,它就会停止查看。
鉴于此,我们不需要将每一个都包括在内。
=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,excel将移动下一个将为true,excel将停止查看。
知道了这一点,我们就可以避免让水混淆的AND()。
然后最后一个公式我们根本不需要IF语句。如果它大于250000,则所有四个都将解析为false,并且结束公式将会触发。
答案 1 :(得分:2)
由于您只处理数字,因此您可能会发现处理布尔数学而不是嵌套if()
函数更容易。
使用此技术,我们的条件为TRUE
或FALSE
,与1
或0
相同。所以我们的条件应该写成:
If(condition, result_if_true)
相反,会写成:
(condition*result_if_true)
如果我们的result_if_true为B4+1
且B4
等于5
为例,我们的条件为真,那么:
(1*(B4+1))=(1*(5+1)) = 6
否则我们得到:
(0*(B4+1))=(0*(5+1)) = 0
您可以将一堆这些(condition*result_if_true)
语句一起添加,而不是嵌套的if()
公式。在你的情况下:
=(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))
现在跟踪你的开始和结束的parantheses要容易得多,所以你最终不会陷入大麻烦。此外,回到Excel 2003,您只能嵌套7个IF,这是一个很好的方法。我相信你现在可以去64岁了,如果你接近那个极限,愿上帝怜悯你的灵魂。