上一篇中,我们说了几个简单的逻辑函数,今天逻辑函数的重磅来了——就是IF函数。IF函数在excel中的点名率很高,而且熟练的使用IF函数后,你会发现很多不知道怎么操作的数据瞬间清晰明了了起来。也可以轻松玩转公式的嵌套,成为同事口中的“大神”。
其实IF函数的语法很简单,那么为什么好多人在IF函数面前总是觉得一片混乱呢?说到底,“逻辑函数”最重要的是“逻辑”,如果“逻辑”不清楚,没有条理,自然也就无法玩转逻辑函数。其实在excel中,很多函数都要求你的思路清晰,逻辑分明,永远知道“我要通过什么去得到什么”,所以,我们在了解逻辑函数的过程中,不单要理清逻辑函数的条理,也要从中体会excel的思维。
现在,欢迎进入“逻辑”的世界……
IF函数语法详解
已知,IF函数的语法如下,
IF(logical_test,value_if_true,value_if_false)
什么意思呢?通俗的说就是如下,
IF(填入一个要判断的东西,这个东西要是对的会怎么样,这个东西要是错了又怎么样)
即是一个非此即彼的过程。
那么这个要判断的东西可以是什么呢?它可以是以下几种形式,
一个逻辑表达式,诸如“B11>2“、“1+1>3”之类有对错之分的式子;
返回值为“true”与“false”的函数,什么样的函数返回值为对/错呢?就是逻辑函数呗!可以是前文说的and、or,也可以是另一个IF函数。
数值或者返回值为数值的函数,即直接填入某个数或者诸如sum、countif之类返回数值的函数,值得注意的是,在这种情况下,如果数值为0则IF函数判断为false,而如果是非0函数则判断为true。
那这个对了错了要怎样,又该填入什么呢?
就填true或者false——这很好理解对就是对,错就是错。
填入文本,为了方便表格阅读,可以把这两项用文本表示,比如返回为true的时候,让它来显示“对了!”,反之显示“错了!”,我们的表达式就是可以是,IF(logical_test,"对了!",“错了!”)
填入数值,这个也不难理解,就是直接填入某个数字,如果表达式正确返回某个数值,而如果错误返回另一个。比如,在制作考勤扣款时候,用IF表达式判断是否迟到,如果迟到了扣款返回-50,如果没迟到则返回0。
填入函数,这个返回位置也是可以填入其它的函数的,这个函数就无所谓是返回对错还是数值了。
而以上四种是可以任意两个混合使用的哦!比如迟到的例子,通过表达式判断是否迟到后,TRUE可以返回一个函数计算每次迟到乘以一次迟到扣款多少钱,而false则返回一个文本显示“他没迟到!”
Tips:
在excel中,需要以文本形式显示的内容需要加双引号,而且必须是英文状态下的双引号;
同样的,在公式输入过程中出现的逗号、运算符号、括号等等都应该是英文状态下的符号;
公式中如果用错了符号会返回#NAME错误,我叫它“你说啥,听不懂”错误。
利用IF函数做单层判断
纸上谈兵了这么久,相信你已经摩拳擦掌要试一试了,现在我们就来感受下IF的魔力吧!
我们不妨就用这个“迟到”的例子,假设有一位员工叫小白,我们要通过今日的考勤来判断他今天迟到了没有,
小白签到时间是8点01分,可上班时间是8点,显然小白同志迟到了,那么如果用IF函数该如何表达呢?
可知员工是否迟到的标准是“签到时间是否晚于上班时间”,所以,
假设,我们只想明了员工是否迟到,设想一下,我们的IF函数应该这样表达,
IF(签到时间>上班时间,“迟到!”,“正常!”)
让我们试一试,我们输入公式=IF(B2>C2,"迟到了!","正常!") ,则显示如下,
更改下时间后,结果也跟着会改变,
在这里,我们的三个参数就是表达式+文本+文本的形式.
这里还能有什么变化呢?假设我们的空格是“考勤扣款”,我们就可以把公式改为数字的形式,即=IF(B2>C2,-50,0) ,则有,
这里IF的三个参数就是表达式+数值+数值的形式了。
多层判断及函数嵌套
如何进行IF函数的多层判断呢,我们再来举个例子:
小白接到了一个任务,把绩效考核成绩分成三大类,优秀、称职、不称职,而标准为大于90分则为优,大于60分则为良,小于60则为差。
首先我们来理清下问题的思路:
根据上图,再练习IF函数的语法,我们接下来就可以试着去填写IF函数了,
第一层:IF(成绩>=90,“优秀”,(成绩低于90))
第二层:IF(成绩>=90,“优秀”,(IF(成绩>=60,"称职",“不称职”)))
让我们验证一下,
是不是成功了呢?
在这里有些朋友有时候经常会出现错误,是怎么发生的呢?我们一起来解释一下。
我们可以看到,在这个案例中,我们有三个区间,即为
100到90、90到60、60到0。
而我们的解法中,最外层的嵌套是大于等于90,有些朋友就偏要说,反正都是三个区间,我从0到60开始算不行吗?
答案:是当然不行!
我们想一下IF函数的计算过程,IF函数第一个判断的是最外层的表达式,而非最内部的嵌套公式,而如果我们把区间反过来,第一个区间是“考核成绩大>0”,那么正如我们所知道的,考核成绩肯定都是大于0的啊,IF函数会直接返回第一层的TRUE而结束整个计算过程,后面无论你嵌套多少公式,都”走不下去“。
就会出现以下状况,
这一点是我们必须要记住的,excel和我们小时候学数学的四则运算不同,它不会从最内部的括号开始计算,而是始终从左到右计算最外层的函数。
正如上面的例子,我们的区间包含关系如下,我们只要记住,从最小的区间开始才是万无一失的!
关于IF函数,还可以参考我以前的文章
跟HR一起做工资——教你玩转excel(个税的计算&简单的逻辑函数)
「excel有乐趣」依据生日计算星座(If公式的巩固使用)
查找函数好伴侣—IFERROR()函数
我们这里还剩下一个逻辑函数即为iferror,通过英文,我们可以知道它的意思就是”如果错了“,所以它的语法,
IFERROR(value,value_if_error)
翻译过来就是
IFERROR(没错就这样吧,错了我要等于别的东西)
即,如果条件正确,则返回原公式所得值,否则返回其他的值。它多跟查找函数vlookup、lookup等一起应用,让我们看一下,
为什么要做这样的嵌套呢?我们可以看到,上图的例子是一个工资表中的项目,而这一列为加班工资,如果单独使用vlookup,有加班工资的则返回加班公司,没有的则会返回错误值#N/A。
而在工资表中,每一项都需要sum加和,这个时候如果在sum的范围内存在错误值#N/A,那么sum的最终结果也会错误,而用iferror函数,在vlookup错误的时候,返回为”0“,则保证了下一步的求和运算。
好了,逻辑函数到此就全部结束了,是否弄懂了呢?
欢迎留言讨论,也欢迎各位提出案例共大家分析学习~~
(未完待续)
目标是做最接地气儿的excel教程~