大数跨境
0
0

这公式该如何简化?=IF(OR(AND(B2="男",C2>=60),AND(B2="女",C2>=55)),"退休","")

这公式该如何简化?=IF(OR(AND(B2="男",C2>=60),AND(B2="女",C2>=55)),"退休","") 数据分析就用Excel
2021-01-02
2
导读:……

HI,大家好,我是星光。


前两天出了一道多条件判断练习题▼



如上图所示的数据表,A列是人名,B列是性别,C列是年龄。


假设男性60岁退休,女性55岁退休,现在需要在D列编写公式,判断相关人员是否已退休。


有的朋友编写函数公式如下:


=IF(OR(AND(B2="男",C2>=60),AND(B2="女",C2>=55)),"退休","")



AND(B2="男",C2>=60),判断男性是否应该退休,返回一个逻辑值TRUE或者FALSE。


AND(B2="女",C2>=55),判断女性是否应该退休,同样返回一个逻辑值TRUE或者FALSE。


然后使用OR函数将两个逻辑值串联;任意一个条件为真,则IF函数判断条件成立,返回文本值退休,否则返回假空。


公式的逻辑似乎是非常清晰的,但是长度看起来又有点儿复杂——如何简化呢?


……


首先从规则可以得知,大于等于60岁,不论男女,都应该退休了,所以判断性别是否为男,就是多余的,因此我们可以将公式简化如下:


=IF(C2>=60,"退休",IF(AND(C2>=55,B2="女"),"退休",""))


然后换个角度想一下,计算规则也可以表达为,如果性别为男,则年龄>=60岁退休,否则年龄>=50岁退休,因此我们可以将公式再简化如下:


=IF(C2>=IF(B2="男",60,55),"退休","")


IF(B2="男",60,55),根据性别,返回一个退休年龄,如果是男,返回60,否则返回55;然后用实际年龄和该退休年龄作比较,即可判断是否已退休。


……


还没完,它还可以更短。


IF(B2="男",60,55),这个IF函数计算结果是一个数值。在逻辑判断中,逻辑值和数值是可以相互转换的。如果你经常写函数,就会敏感的意识到这家伙还可以简化,比如:


=IF(C2>(B2="男")*5+54,"退休","")


如果B2性别为男,则B2="男"返回结果TRUE,也就是1,否则返回0。然后该值乘以5,再加54……也就是说,如果B2是男性,则返回结果59,否则返回54;然后判断C2的值是否大于该值,即可得知是否到了退休年龄。


你以为这就完了?


当然不!


再给大家分享几种其它解法,解法来源EH社群里的几位大佬,比如来自嘉庆城的萧大官人,来自北京城的随风大少,来自人普高层的二肥书记,来自国企摸鱼的阿怪姐姐,以及来自民间核能研究院的Hyuk老哥、来自村花李芳的前任Lf……等等吧,都是有闲有钱的人呀。


❶ TEXT函数解:

=TEXT(C2-(B2="男")*5-55,"退休;")

LEFT函数解:

=LEFT("退休",(C2>(B2="男")*5+54)*2)

SUM函数也来凑热闹

=IF(SUM((C2&B2=ROW($55:$150)+(B2="男")*5&{"男","女"})*1),"退休","")

❹ VLOOKUP也不能闲着:

=VLOOKUP(C2-(B2="男")*5,{0,"";55,"退休"},2)

 LOOKUP一把推开VLOOKUP:

=LOOKUP(C2-(B2="男")*5,{0,"";55,"退休"})

COUNTIFS表示硬来的话它也行啊:

=IF(OR(COUNTIFS(C2,">"&{54,59},B2,{"女","男"})),"退休","")

❼  SUMIFS表示既然COUNTIFS行,那它也必须行~


=IF(OR(SUMIFS(C2,C2,">"&{54,59},B2,{"女","男"})),"退休","")


……


再继续下去,你会感觉这题似乎每个函数都可以煎饼果子来一套,解法可以叠加到几十种……真是闲的够够的。



还是就这样吧,左上角点关注,右下角点个赞,咱们下期再见。


案例文件下载戳阅读原文即可~

【声明】内容源于网络
0
0
数据分析就用Excel
Excel易用宝专属公众号,分享Excel操作技巧、函数、公式、透视表、图表、VBA及Power BI教程,助您轻松提高办公效率,搞定数据分析!
内容 855
粉丝 0
数据分析就用Excel Excel易用宝专属公众号,分享Excel操作技巧、函数、公式、透视表、图表、VBA及Power BI教程,助您轻松提高办公效率,搞定数据分析!
总阅读33
粉丝0
内容855