=IF(60<=B2<=80,'对','错')这公式真的错了吗?

每天一篇Excel技术图文
微信公众号:Excel星球
NO.720-这语句到底错在哪里
作者:看见星光
微博:EXCELers / 知识星球:Excel

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是函数逻辑运算的核心要义》里有详细的讲述,这里就不再重复了;感兴趣的朋友可以点击链接自行阅读。

没了,今天和大家分享的内容就这些,点滴学习,每天进步,咱们下期再见。

需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?加入我的付费社群,和2000+学员共同精进Excel,这一切都不是问题……
从0到1、从入门到实战...
图文/视频系统教程+微信群答疑...
函数、透视表、VBA、PQ、SQL
教程全覆盖,想学什么你就学什么……
(0)

相关推荐