前段时间给大家分享了「如果通过梳理计算逻辑简化IF函数」的推文,事后有些朋友在后台留言表达了不同意见。
有朋友认为IF函数不需要简化,应该一层层堆积下去,这样计算逻辑才清楚,有利于公式阅读,也方便后期修改与维护。
甚至有朋友认为里面的VLOOKUP/LOOKUP等解法属于奇巧淫技,毫无存在的意义。
你们要是都持有这样的观点那我可就不困了
无论是Excel还是其它软件的数据分析,逻辑压缩与简化是再正常不过的事情;而IF函数虽然说是条件判断函数,但条件判断和条件查询本来就是一丘之貉……咳,是小日子过的不错的一家人。
当IF函数嵌套层次超过3层后,被其它查询函数(VLOOKUP/LOOKUP等等)代替——简直理所应当。摊手,看我小眼睛,骗你娶你不论男女。
跟我来,我带你看三个常见的……小栗子。
案例1
连续区间判断
这问题很多人会立刻想到使用IF函数去处理:
解法1 ▼ =IF(B2>90,"优异",IF(B2>80,"优秀",IF(B2>70,"良好",IF(B2>=60,"及格","不及格"))))
解法2 ▼ =LOOKUP(B2,{0;60;70;80;90},{"不及格";"及格";"良好";"优秀";"优异"})
如果你所使用的Excel是2019版+,还可以使用下IFS函数,但依然没有LOOKUP简洁。
解法3 ▼ =IFS(B2<60,"不及格",B2<70,"及格",B2<80,"良好",B2<90,"优秀",B2>=90,"优异")
=LOOKUP(B2,E$1:F$6)
如下图所示,如果B列的数据等于福清/厦门/泉州之一,则返回福建;如果等于枣庄/济南/青岛之一,则返回山东;如果等于徐州/南京之一,则返回江苏。
如上图所示,在E:F列构建参数表,E列是市,F列是对应的省份。C2单元格只需要输入以下公式,并复制填充至数据表的最后一行,即可获取结果。
=VLOOKUP(B2,$E$2:$F$9,2,0)
如果你觉得参数表是拖油瓶,不想带它玩,可以在编辑栏选中VLOOKUP第2参数按F9键,一键将其转换为常量数组,然后再删除参数表即可。
=IF(B2="男",
IF(C2<13.6,"低体重",
IF(C2<18.4,"正常",
IF(C2<20.4,"超重","肥胖"))),
IF(C2<13.4,"低体重",
IF(C2<17.8,"正常",
IF(C2<20.2,"超重","肥胖"))))
这还只是一个性别维度,如果再增加年级/年龄等维度呢?听说公式写的越长越复杂水平越流弊?呵呵哒,芭比囧囧囧……
=LOOKUP(1,0/((F$2:F$9=B2)*(G$2:G$9<=C2)*(H$2:H$9>=C2)),$I$2:$I$9)
三例欧瓦,挥挥手下期再见。
https://pan.baidu.com/s/1bgYSSitQ450paGS3pnrRrA
⏩需要系统学习Excel却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?
加入我的付费社群,学习+训练+答疑,与5000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道
🚂>>~
超低价Excel终身会员:一次付费
永久迭代学习,学习问题永久答疑
扩展阅读
本文由公众号“Excel星球”首发。
点击阅读原文系统学习Excel!