用IF的话,函数如下:

=IF(D2<129,D2-10,IF(D2<249,D2-20,D2-50))

或者

=IF(D2>=249,D2-50,IF(D2>=129,D2-20,D2-10))

有个技巧:

要么都用大于号,从大到小判断;

要么都用小于号,从小到大判断;

如果你实在不喜欢嵌套,可以使用如下公式:

=IF(D2<129,D2-10,0)+IF(AND(D2>=129,D2<249),D2-20,0)+IF(D2>=249,D2-50,0)

该公式没有嵌套,使用3个if相加。对于每个单元格,只会符合一个if,其他两个为0。


正确公式可以写成=IF(F1<129,F1-10,IF(F1<249,F1-20,F1-50))

有3个结果的if函数多层嵌套可以这样理解

=IF(条件1,结果1,if(条件2,结果2,结果3))

如果多个条件和结果的嵌套,比如说有10个结果的话公式可以设置为(excel2003超过7层不支持,其他版本excel支持超过7层嵌套)

=IF(条件1,结果1,if(条件2,结果2,……if(条件9, 结果9, 结果10)))))))))

注意:在写公式的时候有个小技巧,条件可以从小到大写,也可以从大到小写,不要大小混著来

从小到大就是=IF(F1<129, F1-10,IF(F1<249,F1-20,F1-50))

从大到小就是=IF(F1>=249,F1-50,IF(F1>=129,F1-20,F1-10))

以上两个公式都对,都可以解决问题

初学者容易把公式写错,常见的情况会写成

=IF(F1<129,F1-10,IF(129=<F1<249,F1-20,if(F1>=249,F1-50)))

这种写法符合我们思维习惯,但不符合公式的语法,首先if函数条件不支持129=<F1<249这样的写法,你可以写成and(F1>=129,F1<249),即便这样了,公式写成

=IF(F1<129,F1-10,IF(and(F1>=129,F1<249),F1-20,if(F1>=249,F1-50))) 公式结果虽然是对的,但是公式看起来非常的冗长,逻辑关系之间存在重复,不够简洁,因为F1<129显示F1-10,否则在(F1>=129并且F1<249)的情况下显示F1-20,这个否则本身就说明剩下的条件肯定是大于或等于129了,再写一遍F1>=129的条件就显得多余了


三种办法

1 =IF(A1<129,A1-10,IF(A1>=249,A1-50,A1-20))

2 =A1-LOOKUP(A1,{0,129,245},{10,20,50})

3 =A1-LOOKUP(A1,$F$1:$F$3,$G$1:$G$3)


这个用if嵌套,if函数就是两条条件=if(F<129,F-10,F>=249,F-50,F-20)


F2-lookup(F2,{0,129,249},{10,20,50})


if嵌套即可,=IF(A1<129,A1-10,IF(A1>=249,A1-50,A1-20))。

利用多层嵌套的话,可以把单个判断结果放在IF函数的是输出,多个判断结果放在否输出,这样便于核对函数的逻辑是否错误。


用text简单解决

=text(D2,"[>=249]F-50;[>=129]F-20;F-10")


都是假想,方法


推荐阅读:
相关文章