=IF(60<=B2<=80,'对','错')这公式真的错了吗?
HI,大家好,我是星光。
最近Excel社群来了不少新朋友,在学IF函数时都遇到一个相同的小问题。
我举个例子,如下图所示的数据,需要判断成绩是否良好。良好的标准是成绩既要大于等于60又要小于等于80。
很多朋友将公式写成下面这样:
=IF(60<=B2<=80,'OK','NO')
这公式乍看起来好像没啥问题,60<=B2<=80的意思不就是B2既要大于等于60,又要小于等于80吗?如果条件成立,IF函数就返回OK,否者返回NO。
公式倒也可以正常返回结果,系统没说有啥错,只是最后C6和C8单元格的计算结果不大对,理应返回OK的,却都返回了NO——明明看起来很正常的一个公式,怎么突然就发神经了呢?难道Excel函数也玩成年人无声无息的崩溃?
……
打个响指,问题就是出在60<=B2<=80上。
大家的理解是,它是在计算B2大于等于60,同时小于等于80;但Excel并不这么认为,毕竟Excel这玩意真不是人,不能以人类的思维去琢磨它。你以为你在第2层,它也在第2层,但实际上,它可能在地下第十八层。
Excel会先计算60<=B2,本例中,B2为45,因此这部分返回逻辑值FALSE。然后再计算FALSE<=80,这里有一个知识点,在《什么是Excel数据类型》里咱们讲过,数值小于文本值,文本值小于逻辑值,FALSE<=80,用逻辑值和数值作比较,返回的结果必然为FALSE。
换句话说,不管B2的值是多少,60<=B2<=80都必然返回逻辑值FALSE。
你琢磨一下,是不是这个道理?
x<=B2必然返回一个逻辑值,逻辑值<=数值,必然返回FALSE。
最后就导致C列整列的公式都返回结果FALSE。
……
那么正确的函数公式是啥样的呢?
在Excel中,表达并且关系,有两种方式,一种是使用AND函数▼
=IF(AND(60<=B2,B2<=80),'OK','NO')
AND函数需要所有表达式都为TRUE,结果才返回TRUE;任意一个表达式为FALSE,结果就返回FALSE,也就实现了B2既要大于等于60,又要小于等于80的判断规则。
另外一种方式是使用乘法表达式▼
=IF((60<=B2)*(B2<=80),'OK','NO')
为什么可以使用乘法表达式代替AND函数?乘法表达式和AND函数又有何异同?
这部分内容我们在教程《为什么说0和1是函数逻辑运算的核心要义》里有详细的讲述,这里就不再重复了;感兴趣的朋友可以点击链接自行阅读。
没了,今天和大家分享的内容就这些,点滴学习,每天进步,咱们下期再见。