1.IF函数

IF函数算是Excel中最基本的逻辑判断函数。
语法如下:
IF(logical_test, value_if_true, [value_if_false])
logical_test:必需,要测试的条件。
value_if_true:必需,logical_test 的结果为 TRUE 时,您希望返回的值。
value_if_false:可选,logical_test 的结果为 FALSE 时,您希望返回的值。

示例

1.最简单的应用—判断数值返回文字

比如判断单元格数值是否大于60,大于就返回及格,小于就返回不及格。
image.png

2.在真假参数嵌套使用IF函数

IF函数的真和假参数字段,不仅可以简单的返回值,也可以继续套用其他函数,比如IF。
image.png
其公式如下:

  1. =IF(B65>60,IF(B65<90,"良好","优秀"),"不及格")

如果翻译为JS脚本,类似于:

= function(){
    if(B65>60){
      if(B65<90){
        return "良好";
    }else{
        return "优秀";
    }
  }else{
      return "不及格";
  }
}

所以理解Excel函数,可以将其理解为一种编程语言(的变体)。

2.逻辑函数AND、OR、NOT、XOR与乘法、加法运算

AND、OR、NOT、XOR代表了四种逻辑关系,即与、或、非、亦或。

AND

所有参数的逻辑值为真时,返回 TRUE;只要一个参数的逻辑值为假,即返回 FALSE。
语法
AND(logical1,logical2, …)
Logical1, logical2, … 表示待检测的 1 到 255 个条件值,各条件值可为 TRUE 或 FALSE。
说明
■参数必须是逻辑值 TRUE 或 FALSE, 或者包含逻辑值的数组( 用于建立可生成多个结果或可对在行和列中排列的
一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量)或引用。
■如果数组或引用参数中包含文本或空白单元格,则这些值将被忽略。
■如果指定的单元格区域内包括非逻辑值,则 AND 将返回错误值 #VALUE!。
示例
image.png
相当于JS脚本:

if(B74>=90 && C74>=90 && D74>=90){
    return True;
}else{
    return False;
}

所以AND可以作为IF的第一个参数。
image.png
其公式如下:

=IF(AND(B79>=90,C79>=90,D79>=90),"整体优秀","良莠不齐")

相当于JS脚本:

if(B74>=90 && C74>=90 && D74>=90){//所有科目都≥90分
    return "整体优秀";
}else{//至少有一门<90分的其他所有情况
    return "良莠不齐";
}

理解了AND也就可以理解OR、NOT、XO,它们都是Excel对多个逻辑表达式之间关系的函数式描述。
唯一的区别是逻辑关系的不同。

逻辑函数 参数要求 返回值
AND(logical1,logical2, …) 参数必须能计算为逻辑值(TRUE或FALSE)或返回逻辑值的表达式 所有参数的逻辑值为真时,返回 TRUE;只要一个参数的逻辑值为假,即返回 FALSE。
OR(logical1,logical2,…) 参数必须能计算为逻辑值(TRUE或FALSE)或返回逻辑值的表达式 在其参数组中,任何一个参数逻辑值为 TRUE,即返回 TRUE;所有参数的逻辑值为 FALSE,才返回 FALSE。
NOT(logical) 只有一个参数,参数必须能计算为逻辑值TRUE或FALSE)或返回逻辑值的表达式 对参数值求反。如果逻辑值为 FALSE,函数 NOT 返回 TRUE;如果逻辑值为 TRUE,函数 NOT 返回 FALSE。
XOR(logical1, [logical2],…) 参数必须能计算为逻辑值(TRUE或FALSE)或返回逻辑值的表达式 返回所有参数的逻辑异或。在多个参数条件中有且只有一个结果为TRUE时,结果返回TRUE。其他情况全部返回FALSE。

OR的实例

image.png
其公式如下:

=IF(OR(B79>=90,C79>=90,D79>=90),"有优秀科目","整体不行")

相当于JS脚本:

if(B74>=90 || C74>=90 || D74>=90){//至少有一科≥90分
    return "有优秀科目";
}else{//没有一科≥90
    return "整体不行";
}

NOT的实例

image.png

XOR实例

image.png
意料之外出现了意料之外的结果。暂无解释。

逻辑表达式的加法与乘法

在公式中可以使用乘法代替AND函数,使用加法代替OR函数。

用*代替AND函数

image.png
与原来的AND函数表述形式等价:
image.png

用+代替OR函数

image.png
与原来的OR函数表述形式等价:
image.png
可以看到,使用*或+时,单个表达式都要用括号括起来。

活学活用*和+案例

下面的案例判断是否达到退休要求,其设定的退休要求是:

年龄大于50岁且工龄大于30岁,或有重大疾病

  • 也就是身体健康情况下,必须满足年龄大于50岁且工龄大于30岁
  • 但是只要有重大疾病,可以不必满足年龄和工龄的硬性条件

image.png
公式如下:

=IF((B127>50)*(C127>30)+(D127=TRUE),"可以退休","不符合退休条件")

其实在括号中隔绝了一个表达式区域,里面可以包含其他的IF语句或AND、OR、NOT等操作。

3.IFS函数

IFS 函数的参数是多个成对出现的条件和返回值,用于取代多层嵌套IF语句的困难可读性。

语法 IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], [logical_test3, value_if_true3],…) logical_test1:(必需),计算结果为 TRUE 或 FALSE 的条件。 value_if_true1:(必需),当 logical_test1 的计算结果为 TRUE 时要返回结果。可以为空。 logical_test2…,logical_test127:(可选),计算结果为 TRUE 或 FALSE 的条件。

value_if_true2…,value_if_true127:(可选),当logical_testN的计算结果为 TRUE 时要返回结果。

每个value_if_trueN对应于一个条件logical_testN。可以为空。

说明

■ IFS 函数允许测试最多 127 个不同的条件。

■ 例如:=IFS(A1=1,1,A1=2,2,A1=3,3)

如果(A1 等于 1,则显示 1,如果 A1 等于 2,则显示 2,或如果 A1 等于 3,则显示 3)。

■ 一般不建议对 IF 或 IFS 语句使用过多条件,因为需要按正确的顺序输入多个条件,这样一来,构建、测试和更新会变得十分困难

IFS函数的语法可以理解为:
IFS(逻辑值/逻辑表达式1,表达式1为TRUE时返回的值,[逻辑值/逻辑表达式2,表达式2为TRUE时返回的值],…)
这有点类似于编程语言中的if…else if的结构:

if(逻辑值/逻辑表达式1){
    return "表达式1为TRUE时返回的值";
}else if(逻辑值/逻辑表达式2){
    return "表达式2为TRUE时返回的值";
}else if(逻辑值/逻辑表达式3){
    return "表达式3为TRUE时返回的值";
}else if(){
    ...
}...

IFS实例

image.png

4.SWITCH函数

这就真的很编程语言了。
image.png

5.IFERROR和IFNA——实现错误处理和屏蔽

注意与ISERR、ISERROR以及ISNA函数区别。IS开头的都只是在判断值类型,而IF开头的,除了判断值类型还会进行相应的处理和操作。