跳到主要内容

逻辑函数

逻辑函数用来判断条件是否成立,再决定返回 TRUEFALSE、分数或一段文本。

使用场景

  • 按分数输出等级、风险级别或推荐结果
  • 同时满足多个条件时才触发某个结论
  • 只要满足任意一个条件就给出提示
  • 对已有判断结果做取反或组合判断

先看这些函数怎么选

函数什么时候用示例
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。它通常不会单独使用,更多是作为 IFIFS 的返回值或兜底条件。

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。它不适合替代 ORAND

逻辑函数返回的是文字还是布尔值?

ANDORNOTXORTRUEFALSE 默认返回的是逻辑值。IFIFS 返回什么,取决于你给它的结果参数写了什么。