逻辑指人们思考问题时,从某些已知条件出发推出合理结论的规律。逻辑关系通常有因果、是非、条件……Excel同样具备理解逻辑关系的能力,最常见的就是“是非”和“条件”关系。
“是非”关系很简单,就是判断真假,使用最简单的等于号“=”就能判断。“条件”关系是满足“如果……就……”句式的一种关系,换种说法就是满足某个条件时会怎么样,不满足某个条件时又会怎么样,比如使用IF函数。
IF函数允许用户逻辑比较某个值,如果条件为真,该函数将返回一个值;如果条件为假,函数将返回另一个值。IF函数一共有三个参数,如图2-36所示为每个参数的具体含义。值得注意的是,参数1是一个逻辑表达式,可使用任何比较运算符,返回的结果必须是逻辑值,它相当于进行逻辑推理时的已知条件。
图2-36 IF函数各参数含义的拆解
从IF的参数构成来看,可以将IF函数解决问题的场景分为三类。
这是IF函数最简单的形态,套用IF函数的参数即可,表示“如果……那么……否则……”,比如:=IF(A2>B2,"超出预算","正常"),含义为:如果A2>B2,那么超出预算,否则属于正常。
案例: 制作任务到期提醒。
假设某项任务需要在某个时间点之前完成,则可利用Excel做一个任务到期提醒。判断条件是C2-TODAY()>0,就是用到期时间与“当天”进行比较,如果到期时间大于“当天”,就会返回任务还剩多少天;如果小于“当天”,就会返回“到期”。
如图2-37所示,在D2单元格输入公式=IF(C2-TODAY()>0,"任务还剩"&C2-TODAY()&"天","到期"),然后向下填充至所有的单元格。
图2-37 使用IF函数制作到期提醒示例
实际工作中,我们碰到的问题往往不是简单的“非此即彼”判断,通常是一个条件判断完之后,并不能马上得出结论,还需要再次进行一轮判断。这就需要用到IF函数的嵌套,IF函数嵌套使用最多的场景就是判定成绩的等级。
如图2-38所示,是一组成绩等级判定标准,要求根据此标准求出学生的成绩等级。
图2-38 成绩等级判定标准
在E2单元格中输入公式=IF(D2>89,"A",IF(D2>79,"B",IF (D2>69,"C",IF(D2>59, "D","F"))),并向下复制,即可求出每一个成绩的等级,如图2-39所示。
图2-39 根据等级标准求成绩的等级
在这个问题中,一次判断并不能得出唯一的结果,比如小于89分的情况,还要再区分>79、>69等,如果不能很好地梳理各层嵌套函数之间的逻辑关系,就难以写出多层IF函数嵌套。有什么破解的方法吗?答案就是用二叉树分析法。
不管IF嵌套几层逻辑关系,每一层逻辑都会符合“如果……那么……否则……”这样的基础句式。也就是说,每一层都只有两个选择:非此即彼。因此,我们可以使用二叉树法对IF函数嵌套的逻辑关系进行分析,如图2-40所示,将判断条件按照树形结构一步一步地展开,这里有一个诀窍,即每次进行条件判断时,都必须保证可以得出一个结论,也就是保持二叉树的单边走向,这样可以极大地简化IF函数嵌套。
图2-40 IF函数嵌套的二叉树分析法
提示 IF函数的嵌套中,Excel会对不同层级的括号进行不同颜色的标记,这样有助于识别出多个IF函数的层级。如果要修改上面的公式,当把鼠标光标移动到每个结束的括号时,其对应的左括号将显示相同的颜色,这在复杂的嵌套公式中尤其有用。
根据二叉树的特点可知,这里的公式=IF(D2>89,"A",IF(D2>79,"B",IF(D2>69,"C", IF(D2>59,"D","F"))))可以这样解读:如果D2>89,则返回A;否则继续判断,如果D2> 79,则返回B;否则继续判断……最终判断,如果D2>59,则返回D,否则返回F。
将此公式向下填充复制后,会依次对D3、D4、D5单元格中的值进行判断。这样就完成了学生的成绩等级判断。
在使用IF函数的嵌套分析时,应尽量减少二叉树分支的数量,这样会给我们理解和解读带来很多便利。如何减少分支数量?需要让分支只往一个方向分散,这样当你解读公式时,只需顺着这个方向去思考,而不用考虑其他二叉树。
为了更好地理解这一结论,我们可以将上述二叉树反过来,把最小的判断D2>59条件放在IF函数嵌套的第一层,然后画出二叉树,就能清晰地体会其中的差别。
实际应用中,还会碰到同时对多个条件进行判断的情况,我们可以借助AND、OR函数完成判断。我们知道,IF函数的第一个参数是一个逻辑值(TRUE或FALSE),只要是能返回逻辑值的函数,都可作为IF函数的第一个参数。
首先引入AND、OR函数,如图2-41所示,AND函数是“逻辑与”关系,OR函数是“逻辑或”关系,使用时,只需将多个条件作为参数放入函数的括号中即可。
图2-41 AND函数与OR函数语法解释
下面举例说明:如图2-42所示,如果这是必选课,所有的科目都通过,才能判断为及格,在A5中输入公式=IF(AND(A2>=60,B2>=60,C2>=60),"及格","不及格"),AND函数作为IF函数的第一参数,判断结果是“否”。因此,IF函数返回最后一个参数“不及格”;如果是选修课,只要任意一门课程考试通过,就算及格,在A4单元格中输入公式=IF(OR(A2>=60,B2>=60,C2>=60),"及格","不及格"),OR函数作为IF函数的第一参数,判断结果是“是”,因此IF函数返回第二个参数“及格”。
图2-42 AND、OR函数与IF函数的嵌套
同样的题目使用不同的函数,结果是不一样的。这里用一个形象的图来帮助理解AND和OR函数的差异,如图2-43所示。
图2-43 图解AND函数与OR函数的作用