别说你会用if函数¯\_(ツ)_/¯

职场   2025-01-13 07:55   福建  

HI,大家好,我是星光。


IF函数是工作中最常使用的函数之一,今天给大家聊一下这个函数最典型的几种用法,有简单的,也有困难的,有常用的,也有冷门的…咱们尽量做到从易到难到爆炸的节目效果


▎1.单条件判断

难度:

如下图所示,需要判断D列的成绩是否及格,E2单元格公式如下:

=IF(D2>=60,"及格","补考")


▎2.或关系判断

难度:

所谓或关系,是指所有逻辑关系中,任意一个成立,结果即为真的关系。这就好比,某个外号行长的学员经常吹牛说他曾经有10个女朋友,虽然事实上其中9个是假的,但只要其中有一个是真的,都可以证明……他曾经确实有过女朋友。

如下图所示,需要在F列判断是否优秀生。优秀生的标准是语文或者数学的成绩大于85分。


参考公式如下:

=IF(OR(D2>85,E2>85),"优秀","")

又或者使用加法运算代替OR函数:


=IF((D2>85)+(E2>85),"优秀","")

如果你还不明白为什么加法可以代替OR函数,以及这两者之间的异同,可以参考往期推文:「纯洁的0和1


▎3.并且关系判断

难度:

所谓并且关系,是指所有逻辑关系中,必须全部成立,结果才为真的关系。这就好比,某个外号五工的男学员经常吹牛说他曾经有10个男朋友,虽然确实有几个是真的,但只要其中有一个是假的,都可以证明……他说谎了。

如下图所示,需要在F列判断是否优秀生。优秀生的标准是语文数学的成绩都大于85分。


参考公式如下:

=IF(AND(D2>85,E2>85),"优秀","")

又或者使用乘法运算代替AND函数:


=IF((D2>85)*(E2>85),"优秀","")


▎4.多层关系判断

难度:

如下图所示,需要根据D列的成绩,在F列计算学生的等级。等级标准是,大于等于85分为优秀,大于等于60是及格,小于60是不及格。


参考函数如下:

=IF(D2>=85,"优秀生",  IF(D2>=60,"及格","不及格"))

这里需要注意的是,当多层判断嵌套的IF函数超过3层时,通常而言,IF函数就可以被其它函数代替了。其它函数是哪些函数呢?你看我手指大海的方向👇


点击图片阅读教程
「这些问题就别用IF函数了!」


▎5.混合关系判断

难度:

如下图所示,需要根据B列的性别和C列的年龄,在D列判断是否应该退休。退休的标准是男性大于等于60岁,或者,女性大于等于55岁。


参考公式如下:

=IF(  OR(    AND(B2="男",C2>=60),    AND(B2="女",C2>=55)   ),  "退休","")
公式用两个AND分别判断男性或者女性的退休标准,只要其中一个满足条件(OR)则返回退休,否则返回假空。

如果您对数字足够敏感,这个公式可以「简化」如下:

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


▎6.返回引用

难度:

当IF函数返回的结果是单元格区域时,属于引用性质。这时,它可以嵌套在要求参数必须是引用的函数中,比如COUNTIF/OFFSET等,又或者,用于定义名称中制作动态图表。

打个响指,举个简单的例子。

如下图所示,A:C是数据源,需要据此制作右图所示的动态图表,根据F1单元格选择的季度,展示对应的商品销量。


定义一个名字为数据的工作簿级别的名称,来源公式如下:

=IF($F$1="一季度",$C$3:$C$6,$C$11:$C$14)

再将柱形图系列值设置为以下即可。


=工作簿名称!数据


▎7.数组拓展

难度:

看到这儿,看我冷漠的小眼神,大部分朋友就可以随时准备跳转文末点个赞退场了。


有一段数据,如上图所示。

假设1:我需要将姓名横向重复3列。

参考公式如下:

=IF({1,1,1},A2:A5)


假设2:我需要将姓名纵向重复3次。

参考公式如下:

=TOCOL(IF({1,1,1},A2:A5))


假设3:我需要将姓名横向重复2次,同时,特长重复1次。

参考公式如下:

=IF({1,1,0},A2:A5,B2:B5)


在以上各个IF公式中,第1参数都是由1和0组成的常量数组。在往期推文0和1里,咱们学过,1表示真,0表示假,IF函数就据此返回表示真的第2参数、表示假的第3参数。

……

这些看起来好像没什么用的技巧究竟有什么用呢?我再举两个小栗子。

例子1:VLOOKUP逆向查询

这个例子看起来有用实际上也没用但有些朋友应该是比较熟悉的。

如下图所示,A:B是数据源,需要在E列查询D列人名对应的特长。



有些朋友习惯使用VLOOKUP函数:
=VLOOKUP(D2,  IF({0,1},A$2:A$5,B$2:B$5),  2,0)

这里就借助了IF函数数组拓展的技巧,将A列和B列数据颠倒了顺序,以适应VLOOKUP要求查找值必须在查找范围首列的强规则。


不过这个用法通常并不推荐大家使用,不推荐的原因参考往期推文:拜托!VLOOKUP的这个用法就别再用了

拜托!VLOOKUP这用法别再用了👇



例子2:按指定次数重复数据

如下图所示,需要将A:C的数据,按照C列指定的次数重复,右表是模拟结果。


参考公式如下:

公式看不全可以左右拖动..▼
=REDUCE(A1:C1,C2:C5,LAMBDA(_a,_b,LET(  _lst,SEQUENCE(_b),  VSTACK(_a,    HSTACK(      IF(_lst,OFFSET(A1:B1,ROW(_b)-1,)),      _lst^0)))))

第7行是IF函数,第1参数是从1开始到C列指定数量截止的纵向递增序列,比如{1;2;3},以此实现将指定行的数据,比如将A3:B3,重复3次;再使用VSTACK函数纵向合并。


……

除了以上7种用法之外,IF函数还有IF(1和IF({1}的特殊应用,不过这类用法,在版本迭代和编程式函数体系的推动下已经寥若晨星了,这里就不再展开讲述。挥挥手,大家可以安心躺平上班了,咱们下期再见

上千篇原创教程
随学随用 随用随学👆

>需要系统学习Excel却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?加入我的付费社群,学习+训练+答疑,与5000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道

👇👇👇
加入我的Excel会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥
👀

👇本文由公众号“Excel星球”首发。
点击阅读原文,加入Excel会员社群!

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章