逻辑函数
逻辑函数用来判断条件是否成立,再决定返回 TRUE、FALSE、分数或一段文本。
使用场景
- 按分数输出等级、风险级别或推荐结果
- 同时满足多个条件时才触发某个结论
- 只要满足任意一个条件就给出提示
- 对已有判断结果做取反或组合判断
先看这些函数怎么选
| 函数 | 什么时候用 | 示例 |
|---|---|---|
IF | 只有两个结果时 | IF(总分>=60, "及格", "不及格") |
IFS | 有多个分支时 | IFS(总分<60, "不及格", 总分<80, "及格", TRUE(), "优秀") |
AND | 所有条件都要成立 | AND(语文>90, 数学>90, 英语>90) |
OR | 任意一个条件成立就行 | OR(语文>90, 数学>90, 英语>90) |
NOT | 对一个判断结果取反 | NOT(年龄<18) |
XOR | 多个条件里只想要“奇数个成立” | XOR(A, B) |
TRUE | 明确返回真 | IF(条件, TRUE(), FALSE()) |
FALSE | 明确返回假 | IF(条件, TRUE(), FALSE()) |
IF
IF(logical_test, value_if_true, value_if_false)
满足条件时返回一个结果,不满足时返回另一个结果。
IF(成绩<60, "不及格", "及格")
适合做最常见的二选一判断,比如是否及格、是否推荐、是否命中某个条件。
IFS
IFS(logical_test1, value_if_true1, logical_test2, value_if_true2, ...)
按顺序检查多个条件,命中第一个为 TRUE 的条件后,就返回对应结果。
IFS(成绩<60, "不及格", 成绩<80, "及格", 成绩<90, "良好", TRUE(), "优秀")
IFS 很适合写等级判断。为了避免所有条件都不满足时返回空值,建议把 TRUE(), 默认结果 放在最后做兜底。
AND
AND(logical1, logical2, ...)
只有所有条件都成立时才返回 TRUE,只要有一个条件不成立就返回 FALSE。
AND(语文成绩>90, 数学成绩>90, 英语成绩>90)
常见用法是和 IF 一起写成:
IF(AND(语文成绩>90, 数学成绩>90, 英语成绩>90), "优秀", "其他")
OR
OR(logical1, logical2, ...)
只要有一个条件成立就返回 TRUE,只有所有条件都不成立时才返回 FALSE。
OR(语文成绩>90, 数学成绩>90, 英语成绩>90)
常见用法是判断“命中任意一项即可”的场景。
NOT
NOT(logical)
把判断结果反过来:原来为 TRUE 就返回 FALSE,原来为 FALSE 就返回 TRUE。
IF(NOT(成绩<60), "及格", "不及格")
适合把已有条件直接取反,避免重复写一遍相反条件。
XOR
XOR(logical1, logical2, ...)
对多个逻辑值做异或判断。最容 易理解的场景是两个条件里只有一个成立时返回 TRUE。
XOR(语文分数<90, 数学分数<90)
如果传入多个条件,可以简单理解成“成立的条件个数为奇数时返回 TRUE”。
TRUE
TRUE()
直接返回逻辑值 TRUE。它通常不会单独使用,更多是作为 IF 或 IFS 的返回值或兜底条件。
IF(ISEMPTY(方案 选择), TRUE(), FALSE())
FALSE
FALSE()
直接返回逻辑值 FALSE。和 TRUE() 一样,通常作为其他判断里的明确返回值使用。
IF(库存数量==库存盘点数量, TRUE(), FALSE())
常见组合写法
| 要做什么 | 推荐公式 |
|---|---|
| 三科都大于 90 分才算优秀 | IF(AND(语文>90, 数学>90, 英语>90), "优秀", "其他") |
| 任意一科不及格就标记风险 | IF(OR(语文<60, 数学<60, 英语<60), "风险", "正常") |
| 分数分档 | IFS(总分<60, "不及格", 总分<80, "及格", 总分<90, "良好", TRUE(), "优秀") |
| 判断是否未成年人 | IF(NOT(年龄>=18), "未成年", "成年") |
常见问题
IF 和 IFS 怎么选?
只有两个结果时用 IF 就够了。三档、四档、五档这种多分支场景,用 IFS 会更清楚,也更容易维护。
XOR 到底适合什么场景?
最常见的是“两个条件只能满足一个”。如果两个都满足,或者两个都不满足,就返回 FALSE。它不适合替代 OR 或 AND。
逻辑函数返回的是文字还是布尔值?
像 AND、OR、NOT、XOR、TRUE、FALSE 默认返回的是逻辑值。IF 和 IFS 返回什么,取决于你给它的结果参数写了什么。