当前位置:首页 > 技术文章 > 正文内容

IF函数,你真的会用吗?

arlanguage4周前 (04-07)技术文章26

IF是Excel中最基础最常用的函数之一。它可以根据指定条件是否成立,返回对应的结果。官方简历如下:

IF(喂~谈个条件吧,如果条件成立怎么怎么着,如果条件不成立又怎么怎么着)

数一数,一共有三个参数。

第1个参数是必须的,是一个结果为真或假的任意表达式,也就是判断条件。

第2个参数是可选的,当判断条件成立时,返回的指定结果。

第3个参数也是可选的,当判断条件不成立时,返回的指定结果。


举个例子

=IF(B2>=60,"及格","不及格")

B2>=60是一个表达式,判断B2单元格的值是否大于等于60。

如果表达式成立,会得到逻辑值TRUE,也就是说B2>=60这事是真的。

如果不成立呢,会得到逻辑值FALSE,也就是说B2>=60这事是假的。

当B2>=60这事是真的,我们就去找第二个参数,于是得到结果,及格。

当这事是假的,那我们就去找第三个参数,于是得到结果,不及格。

假如B2是数值99,猜一猜,下面这条IF函数会返回什么结果?

=IF(B2>=60,"不及格","及格")


多层嵌套

我们上面举了个成绩考评的例子,把成绩分为了及格和不及格两种。

在实际生活中,这显然很不靠谱。

你说作为一位人民教师,怎么能犯这种非是即否的思维错误呢?

你把60分以下的都叫做不及格——那就算了,怎麽能把60分以上的都叫做及格呢?这对孩子的幼小心灵造成了多大的打击?你怎么着得划分个优秀出来吧?——来自多位优秀生家长的质问。

好吧,为了和谐社会,咱们只能把公式修改一下:

=IF(B2<60,"不及格",if(b2>90,"优秀","及格"))

公式先计算B2单元格的值是否小于60,如果成立则返回“不及格”,如果B2的值大于或等于60呢?公式继续往右走,到第三个参数那里,第三参数是一个IF函数,它先判断B2的值是否大于90,如果成立,则返回优秀,不然就统统返回及格。

第2个IF函数是第1个IF的嵌套函数,用于解决第1个IF条件为假时的分支问题。

这就好比走路,IF这家伙只有两个脑细胞,第一个二叉路口,IF自己就可以搞定,到了第二个二岔路口,它脑细胞用完了,怎么办呢?赶紧生个孩子,让它去继续探路吧,又到了下一个路口,孩子的两个脑细胞也用完了,怎么办呢?没事,反正生函数又不犯法,再生一个,继续探路吧……

如此延续,IF函数最多能生64个孩子,也就是说Excel最多支持64个不同的IF函数嵌套。

……

一条优秀的IF函数嵌套公式,通常都是从假的一端不断延伸,而不会一会儿真端,一会儿假端。

这句话是什么意思呢?

还是举个栗子。

假设成绩大于80分的家长,同样不满意学生的评级制度,要求增加一个“良好”。

好吧,我们只能把评级规则再修改一下,小于60的,都是不及格;60-80及格;80-90为良好;90分以上优秀。

有朋友此时可能会把IF函数写成这样:

=IF(B2>90,"优秀",IF(B2>60,IF(B2>80,"良好","及格"),"不及格"))

尽管这公式能得到正确的结果,但阅读起来逻辑很不清楚。

它的路径是这样的,一会儿从“假”的路径上分叉,提出判断条件,一会儿又从“真”的路径上分叉,提出判断条件。


换个写法:

=IF(B2>90,"优秀",IF(B2>80,"良好",IF(B2>60,"及格","不及格")))

这样逻辑是不是就清楚多了?

它的路径如下图,一直在从“假”的路径上分叉,层层推进。

……

IF函数简单又好用,但有句话不知当讲不当讲反正我要讲,当IF函数嵌套超过三层时,必然会有更高效更简洁的函数代替它工作。

会是哪些函数呢?


AND和OR函数

这节我们来讲下IF函数的多条件判断问题。

多条件判断分为两种情况,一种是“并且”关系,一种是“或”关系。

什么是“并且”关系呢?

并且关系指的是多个条件都同时成立,结果方才为真的情况。

比如说,你的电脑有三个盘,分别是C盘、D盘和G盘。现在杀毒,C盘没有毒,D盘没有毒,G盘也没有毒,三个的条件都成立,OK,我们可以得出结论你的电脑没中毒,你是个老实人。但倘若其中任意一个盘有毒,那你就不能说自己电脑没中毒了,看我小眼神,对不对?

这就是一种典型的“并且”关系问题。

如何使用函数判断“并且”关系是否成立呢?

函数新人通常会使用AND函数。

其语法如下:

=AND(条件1,条件2,条件3,条件n……)

举个实际公式的例子。

=AND(2>1,3>2,4>3)

AND函数包含了三个条件,每个条件计算结果都为TRUE,也就是说每个条件都成立,计算结果返回TRUE。

但倘若哪怕有一个条件为假,比如公式:

=AND(1>2,3>2,4>3)

结果即为FALSE

……

举个HR常见的小栗子:

以下图所示数据表例,假设女人55岁退休,男人60岁退休,现在我们需要计算数据列表中的女性是否应该退休……

D列公式如下:

=IF(AND(B2="女",C2>55),"退休","")

AND函数是一个表达式,作为IF函数的第一参数,有两个判断条件,一个是B2单元格性别是否为“女”,另一个是C2单元格的年龄是否大于55,只有两个条件都成立,AND结果才返回TRUE。

当AND函数结果为TRUE,IF函数返回值“退休”,否则返回假空""。

……

……

说完了“并且”关系,我们再聊下“或”关系。

“或”关系刚好和“并且”关系唱反调,“并且”关系认为所有的条件都成立,才算数儿。“或”关系不这么认为,它觉得做人要大度,有一个条件成立就算OK了,只有所有条件都不成立时,才不算数。

如果“并且”和“或”去谈恋爱,他们的爱情观大概是这样的。“并且”觉得爱情像眼睛,容不下一粒沙子,有一粒沙子咱们就拜拜吧。“或”觉得爱情像沙子,抓的越紧,漏的越多,所以能抓住一个条件就行了——说实话,你喜欢谁?——你又是谁?

举个栗子,如下图所示,是一张成绩表,我们要判断A列学生是不是优秀生,规则是只要语文或数学有一门成绩大于90分即可。

D列公式如下:

=IF(OR(B2>90,C2>90),"优秀","")

OR函数是一个表达式,作为IF函数的第一参数,有两个判断条件,分别判断语文和数学的成绩是否大于90分,如果有一个条件成立,则OR函数返回TRUE。

当OR函数结果为TRUE时,IF函数返回值“优秀”,否则返回假空。

好吧,换下规则——和双科均优秀生的家长无关——只有当语文和数学双科成绩都大于90分时,才可以评定为优秀生,公式又该如何书写呢?

你来!

……

小贴士:

我有时会见到有人将“并且”关系的逻辑表达式写成下面这样。

=IF(60<B2<80,"良好","")

从人类思维的角度讲,这么写,倒也没错,但问题是——Excel它不是人啊?(我这是骂出了多少人的心声)。

你想的是比较B2单元格的值是不是大于60同时小于80,但Excel不这么算。

它会照常从左向右算,先算B2的值是不是大于60,于是返回逻辑值TRUE或FALSE,然后再和80比较谁大谁小。我们之前讲过,不管是TRUE还是FALSE,作为逻辑值都比数值大,所以60<B2<80必然返回结果FALSE,不论B2单元格的值是大是小,整条IF函数也就必然会返回第三参数所对应的值:假空。


好了,今天的内容就是这样吧,下期再见~


图文制作:看见星光

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/3872.html

分享给朋友:

“IF函数,你真的会用吗?” 的相关文章

Nginx-反向代理后应用程序获取客户端真实IP

Nginx反向代理后,后端Java应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名、协议、端口都是Nginx访问Web应用时的域名、协议、端口,而非客户端浏览器地址栏上的真实域名、...

无预算申请免费泛域名SSL证书

今天给大家带来一个福利免费泛域名(通配符)证书,泛域名SSL证书可以直接配置在主域名后,子域名也可以全部自动实现https访问。目前免费SSL证书申请渠道一般都集中在免费单域名证书上,免费通配符证书还是比较难申请到的,相对来说泛域名SSL证书是最方便的证书类型。申请免费泛域名SSL证书教程:PC端点...

Nginx基础知识之rewrite反向代理规则

location ~ .*\.(sh|bash)?$ {return 403;}~是区分大小写的匹配。? 是匹配前面的字符零次或者一次。状态码403是Fobidden,表示服务器已经理解请求,但是拒绝执行它。访问的URL以.sh或.bash结尾,则返回状态码403。403表示服务器已经理解请求,但是...

Nginx负载均衡的一些安全配置说明

在之前的几篇文章里,我们都说到了负载均衡,而负载均衡的转发服务器使用了Nginx,但是我们没有详细的对Nginx的安全配置做一个分析,如果对负载均衡的知识比较有兴趣,欢迎订阅我的头条号:一点热,然后再阅读我之前的文章。快速入口java项目如何实现单一的nginx负载均衡关于Nginx的一些安全设置,...

高端Linux 脚本很有用,赶紧学起来!

Linux 脚本?准确的说叫 Linux Shell 脚本,Shell 脚本是一种被设计用来运行命令行解释器,他是 Linux 系统的一大特色之一。命令行是 Linux 系统中一种非常重要的交互方式,而它的实现基于 Linux 内核和 Shell 程序,为用户提供了强大和灵活的操作方式。使用 Lin...

Nginx缓存设置教程

这篇文章主要介绍了Nginx缓存设置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在...