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,大于就返回及格,小于就返回不及格。
2.在真假参数嵌套使用IF函数
IF函数的真和假参数字段,不仅可以简单的返回值,也可以继续套用其他函数,比如IF。
其公式如下:
=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!。
示例
相当于JS脚本:
if(B74>=90 && C74>=90 && D74>=90){
return True;
}else{
return False;
}
所以AND可以作为IF的第一个参数。
其公式如下:
=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的实例

其公式如下:
=IF(OR(B79>=90,C79>=90,D79>=90),"有优秀科目","整体不行")
相当于JS脚本:
if(B74>=90 || C74>=90 || D74>=90){//至少有一科≥90分
return "有优秀科目";
}else{//没有一科≥90
return "整体不行";
}
NOT的实例
XOR实例
逻辑表达式的加法与乘法
用*代替AND函数
用+代替OR函数

与原来的OR函数表述形式等价:
可以看到,使用*或+时,单个表达式都要用括号括起来。
活学活用*和+案例
下面的案例判断是否达到退休要求,其设定的退休要求是:
年龄大于50岁且工龄大于30岁,或有重大疾病
- 也就是身体健康情况下,必须满足年龄大于50岁且工龄大于30岁
- 但是只要有重大疾病,可以不必满足年龄和工龄的硬性条件

公式如下:
=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实例
4.SWITCH函数
5.IFERROR和IFNA——实现错误处理和屏蔽
注意与ISERR、ISERROR以及ISNA函数区别。IS开头的都只是在判断值类型,而IF开头的,除了判断值类型还会进行相应的处理和操作。


