IF函数是工作中最常使用的函数之一,今天给大家聊一下这个函数最典型的几种用法,有简单的,也有困难的,有常用的,也有冷门的…咱们尽量做到从易到难到爆炸的节目效果。
如下图所示,需要判断D列的成绩是否及格,E2单元格公式如下:
所谓或关系,是指所有逻辑关系中,任意一个成立,结果即为真的关系。这就好比,某个外号行长的学员经常吹牛说他曾经有10个女朋友,虽然事实上其中9个是假的,但只要其中有一个是真的,都可以证明……他曾经确实有过女朋友。
如下图所示,需要在F列判断是否优秀生。优秀生的标准是语文或者数学的成绩大于85分。
=IF(OR(D2>85,E2>85),"优秀","")
又或者使用加法运算代替OR函数:
=IF((D2>85)+(E2>85),"优秀","")
如果你还不明白为什么加法可以代替OR函数,以及这两者之间的异同,可以参考往期推文:「纯洁的0和1」
所谓并且关系,是指所有逻辑关系中,必须全部成立,结果才为真的关系。这就好比,某个外号五工的男学员经常吹牛说他曾经有10个男朋友,虽然确实有几个是真的,但只要其中有一个是假的,都可以证明……他说谎了。如下图所示,需要在F列判断是否优秀生。优秀生的标准是语文和数学的成绩都大于85分。=IF(AND(D2>85,E2>85),"优秀","")
又或者使用乘法运算代替AND函数:
=IF((D2>85)*(E2>85),"优秀","")
如下图所示,需要根据D列的成绩,在F列计算学生的等级。等级标准是,大于等于85分为优秀,大于等于60是及格,小于60是不及格。
=IF(D2>=85,"优秀生",
IF(D2>=60,"及格","不及格"))
这里需要注意的是,当多层判断嵌套的IF函数超过3层时,通常而言,IF函数就可以被其它函数代替了。其它函数是哪些函数呢?你看我手指大海的方向👇
如下图所示,需要根据B列的性别和C列的年龄,在D列判断是否应该退休。退休的标准是男性大于等于60岁,或者,女性大于等于55岁。
=IF(
OR(
AND(B2="男",C2>=60),
AND(B2="女",C2>=55)
),
"退休","")
公式用两个AND分别判断男性或者女性的退休标准,只要其中一个满足条件(OR)则返回退休,否则返回假空。=IF(C2>=IF(B2="男",60,55),"退休","")
当IF函数返回的结果是单元格区域时,属于引用性质。这时,它可以嵌套在要求参数必须是引用的函数中,比如COUNTIF/OFFSET等,又或者,用于定义名称中制作动态图表。如下图所示,A:C是数据源,需要据此制作右图所示的动态图表,根据F1单元格选择的季度,展示对应的商品销量。定义一个名字为数据的工作簿级别的名称,来源公式如下:=IF($F$1="一季度",$C$3:$C$6,$C$11:$C$14)
再将柱形图系列值设置为以下即可。
看到这儿,看我冷漠的小眼神,大部分朋友就可以随时准备跳转文末点个赞退场了。
=TOCOL(IF({1,1,1},A2:A5))
假设3:我需要将姓名横向重复2次,同时,特长重复1次。在以上各个IF公式中,第1参数都是由1和0组成的常量数组。在往期推文0和1里,咱们学过,1表示真,0表示假,IF函数就据此返回表示真的第2参数、表示假的第3参数。
这些看起来好像没什么用的技巧究竟有什么用呢?我再举两个小栗子。这个例子看起来有用实际上也没用但有些朋友应该是比较熟悉的。如下图所示,A:B是数据源,需要在E列查询D列人名对应的特长。=VLOOKUP(D2,
IF({0,1},A$2:A$5,B$2:B$5),
2,0)
这里就借助了IF函数数组拓展的技巧,将A列和B列数据颠倒了顺序,以适应VLOOKUP要求查找值必须在查找范围首列的强规则。
如下图所示,需要将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之道