逻辑函数测试一个条件,并根据它是否成立给出结果。IF 处理一个测试、两种结果。AND 和 OR 用来组合测试。
嵌套 IF 处理多于两种的结果。本课的分数都是虚构的。
怎样选择函数?
把规则念出来,数一数有几种结果。
- 两种结果,一个测试: 用
IF。格式:=IF(test, 成立时的结果, 不成立时的结果)。 - 两种结果,每个测试都必须成立: 把
AND(test1, test2)放进 IF。 - 两种结果,任一测试成立即可: 把
OR(test1, test2)放进 IF。 - 三种或以上结果: 嵌套 IF,并先检查最严格的测试。
例题
规则:分数 50 或以上为 Pass,70 或以上为 Merit,其余为 Fail。B2:B4 中虚构的分数是 62、48 和 50。
第 1 步,先处理两种结果。 在 C2 输入 =IF(B2>=50,"Pass","Fail")。62 显示 Pass,48 显示 Fail,50 显示 Pass,因为 >= 包含 50。
第 2 步,加入 Merit。 先测最严格的条件:
=IF(B2>=70,"Merit",IF(B2>=50,"Pass","Fail"))
对 62:不到 70,但达到 50,所以是 Pass。对 48:Fail。对 50:Pass。75 分会得到 Merit。
第 3 步,组合测试。 如果规则还要求 D 列出席率至少 80,就用 =IF(AND(B2>=50,D2>=80),"Pass","Fail")。62 分、出席率 85 通过。62 分、出席率 70 不通过。
要留意的错误
错误公式:
=IF(B2>50,"Pass","Fail")规则说“50 或以上”,但这个公式说的是“超过 50”。刚好 50 分会得到 Fail。
改成 >= 就对了。另一个常见失误,是把嵌套 IF 里最宽松的测试放在最前面:
=IF(B2>=50,"Pass",IF(B2>=70,"Merit","Fail"))75 分通过第一个测试,得到 Pass,永远到不了 Merit。
把最严格的测试放在最前面,并且始终测试每个边界上的数值。
自我检测
先自己做,再打开每个答案。
1. 用上面的 Merit 公式,70、69 和 49 分别得到什么?
显示答案
70 是 Merit,因为达到 70。69 是 Pass。49 是 Fail。Merit、Pass、Fail。
2. 某学生分数 45,出席率 85。规则是“分数至少 50 或者出席率至少 80”。=IF(OR(B2>=50,D2>=80),"Pass","Fail") 返回什么?
显示答案
第一个测试不成立,第二个成立。OR 只需要一个,所以返回 Pass。如果改用 AND,则返回 Fail。
3. 为什么嵌套 IF 要先测最高的等级?
显示答案
第一个成立的测试生效。如果把较宽松的“50 或以上”放前面,75 分会停在那里,永远不会被测试是否达到 70。
接下来学什么?
当规则有很多等级时,用表格比写很多层嵌套 IF 更清晰。请看使用查找并写清楚前提假设。如果你的及格分数放在单元格里,请回顾绝对引用这一课。用电子表格引用练习格练习预测。
如果你想让老师检查你自己写的规则的逻辑,请看ICT 线上一对一补习。