跳到主要内容

逻辑函数

逻辑函数是公式中的一种函数类型,可以对数据进行逻辑运算。


IF()

判断是否满足某个条件,如果满足则返回第一个值,如果不满足则返回第二个值。

IF(logical, value1, value2)

参数说明

logical:是判断条件,该判断条件的表达式会输出真( true )和假( false )两种值。 value1:是当判断条件为真( true )时的返回值。 value2:是当判断条件为假( false )时的返回值。

注①:IF() 支持嵌套使用,并且可以用于检查单元格是否为空。


示例

// 对数值进行比较,例如下例 {成绩} 字段为数字类型且单元格值为 80 时:
公式:IF({成绩} > 60, "及格", "不及格")
运算结果:"及格"

// 对文本进行比较,例如下例 {任务进度} 字段为单选类型且单元格值为 "已完成" 时:
公式:IF({任务进度} = "已完成", "done", "in progress")
运算结果:"done"

// 对日期进行比较,例如下例 {截止时间} 字段为日期类型且单元格值晚于今天:
公式:IF(IS_AFTER({截止时间},TODAY()), "未过期", "已过期")
运算结果:"未过期"

// 判断空值,例如下例 {文章内容} 字段为文本类型且单元格值为空时:
公式:IF({文章内容} = BLANK(), "为空", "已撰写")
运算结果:"为空"

// 嵌套多层判断条件。例如下例 {成绩} 字段为数字类型,且单元格值为 70 时:
公式:IF({成绩} > 60, IF({成绩} < 80, "中等", "优秀"), "不及格"
运算结果:"中等"

// 多个判断条件同时成立就输出真。例如下例 {成绩} 字段为数字类型,且单元格值为 90 时:
公式:IF({成绩} > 80 && {成绩} <= 100, "优秀", "其他"
运算结果:"优秀"

// 多个判断条件只要有一个成立就输出真。例如下例 {成绩} 字段为数字类型且单元格值为 70 ,{才艺} 字段为文本类型且单元格值为 "A" 时:
公式:IF({成绩} > 80 || {才艺} = "A", "优秀", "其他"
运算结果:"优秀"



SWITCH()

本函数为多分支选择函数,它由表达式 + 多个(分支 + 返回值)组成,如果表达式等于某个分支值,则函数输出该分支对应的返回值。

SWITCH(expression, [pattern, result… ],[default])

参数说明

expression:是表达式,其运算的结果会与每个分支进行匹配。 pattern:是分支,每个分支表示表达式的可能运算结果。每一个分支都有对应的返回值。 result:是返回值,如果表达式的运算结果匹配了一个分支,则输出对应的返回值。 default:非必填,是默认值,如果运算结果没有匹配任何一个分支,则函数输出默认值。默认值未填写时为空值。

注①:[pattern, result… ] 表示可以填写多个分支和返回值的组合。


示例

// 匹配文本值。下列中第一个 "C" 是 expression 即表达式。 "A" 和 "优秀" 分别是一组的 pattern 和 result,它表示如果 expression 为 "A" 时就输出 "优秀"。
公式:SWITCH("C", "A", "优秀", "B", "中等", "C", "普通", "D", "较差", "没有成绩")
运算结果:"普通"

// 匹配文本类型字段 {评分} 中的值。当单元格内值为 "C" 时:
公式:SWITCH({评分}, "A", "优秀", "B", "中等", "C", "普通", "D", "较差", "没有成绩")
运算结果:"普通"

// 和 IF() 函数一起搭配使用。下列字段 {国家}、{地区}为文本类型且单元格内值为 "中国"、"广东"时:
公式:SWITCH({国家}, "中国", IF({地区}="广东", "粤语", "其他"), "俄国", "俄语", "法国", "法语", "其他")
运算结果:"粤语"



TRUE()

返回逻辑值真( true )。

TRUE()

参数说明

该函数不需要填写参数。

该函数可以判断勾选类型的维格列是否为 “已选中状态” ,见例子一; 该函数和 FALSE() 一起使用可以输出为真和假的布尔值,见例子二。


示例

// 判断勾选类型的字段的状态。例如下列 {是否完成} 字段为勾选类型且单元格值为 "已勾选"时:
公式:IF({是否完成} = TRUE(), "已完成""未完成")
运算结果:"已完成"

// TRUE() 和 FALSE() 一起使用输出布尔值。例如下列 {成绩} 字段为数字类型且单元格值为70 时:
公式:IF({成绩} > 60, TRUE(), FALSE())
运算结果:true



FALSE()

返回逻辑值假( false )。

FALSE()

参数说明

该函数不需要填写参数。

该函数可以判断勾选类型的维格列是否为 “未选中状态” ,见例子一; 该函数和 TRUE() 一起使用可以输出为真和假的布尔值,见例子二。


示例

// 判断勾选类型的字段的状态。例如下列 {是否完成} 字段为勾选类型且单元格值为 "未勾选"时:
公式:IF({是否完成} = FALSE(), "未完成""已完成")
运算结果:"未完成"

// TRUE() 和 FALSE() 一起使用输出布尔值。例如下列 {成绩} 字段为数字类型且单元格值为50 时:
公式:IF({成绩} > 60, TRUE(), FALSE())
运算结果:false



AND()

如果所有参数均为真( true ),则返回真( true ),否则返回假( false )。

AND(logical1, [logical2,])

参数说明

logical:是一个或多个逻辑条件。


示例


// 多个逻辑条件为真(true)时,输出真(true)。
公式:AND(3 > 2, 4 > 3)
运算结果:true

// 多个逻辑条件的其中一个不为真(true)时,输出假(false)。
公式:AND(3 > 2, 4 < 3)
运算结果:false

// 判断数值类型的字段是否都满足逻辑条件。例如下列字段 {数学成绩} 和 {语文成绩} 都是数字类型且单元格值分别为 70、80 时:
公式:AND({数学成绩} > 60, {语文成绩} > 60)
运算结果:true

// 作为IF() 函数的判断条件使用。例如下列字段 {数学成绩} 和 {语文成绩} 都是数字类型且单元格值分别为 70、80 时:
公式:IF(AND({数学成绩} > 60, {语文成绩} > 60), "合格", "不合格")
运算结果:"合格"




OR()

如果任何一个参数为真( true ),则返回真( true ),否则返回假( false )。

OR(logical1, [logical2,])

参数说明

logical:是一个或多个逻辑条件。


示例

// 多个逻辑条件为真(true)时,输出真(true)。
公式:OR(3 > 2, 4 > 3)
运算结果:true

// 多个逻辑条件的其中一个不为真(true)时,输出真(true)。
公式:OR(3 > 2, 4 < 3)
运算结果:true

// 多个逻辑条件全部都不为真(true)时,输出假(false)。
公式:OR(3 < 2, 4 < 3)
运算结果:false

// 判断数值类型的字段是否满足任一逻辑条件。例如下列字段 {数学成绩} 、{语文成绩} 都是数字类型且单元格值分别为 50、80 时:
公式:OR({数学成绩} > 60, {语文成绩} > 60)
运算结果:true

// 作为IF() 函数的判断条件使用。例如下列字段 {数学成绩}、{语文成绩} 都是数字类型且单元格值分别为 50、80 时:
公式:IF(OR({数学成绩} > 60, {语文成绩} > 60), "合格", "不合格")
运算结果:"合格"



XOR()

如果奇数个参数为真( true ),则返回真( true ),否则返回假( false )。

XOR(logical1, [logical2,])

参数说明

logical:是一个或多个逻辑条件。


示例

// 奇数个逻辑条件为真(true)时,输出真(true)。
公式:XOR(3 > 2, 4 < 3)
运算结果:true

// 偶数个逻辑条件为真(true)时,输出假(false)。
公式:XOR(3 > 2, 4 > 3)
运算结果:false

// 判断数值类型的字段是否满足奇数个逻辑条件。例如下列字段 {数学成绩}、{语文成绩} 都是数字类型且单元格值分别为 50、80 时:
公式:XOR({数学成绩} > 60, {语文成绩} > 60)
运算结果:true

// 作为IF() 函数的判断条件使用。例如下列字段 {数学成绩}、{语文成绩} 都是数字类型且单元格值分别为 50、80 时:
公式:IF(XOR({数学成绩} > 60, {语文成绩} > 60), "合格", "不合格")
运算结果:"合格"



BLANK()

表示一个空值。

BLANK()

参数说明

该函数不需要填写参数。

该函数可以用来判断单元格是否为空值,见例子一; 该函数可以将单元格内的原内容替换为空值,见例子二; 注①:空值不是零值( 0 )哦。


示例

// 判断单元格是否为空值。下列字段 {开始时间} 是日期类型且单元格值为空值。
公式:IF({开始时间} = BLANK(), "尚未确定时间", "已确定开始时间")
运算结果:"尚未确定时间"

// 将单元格内的原内容替换为空值。下列字段 {价格} 是数字类型且单元格值为 0 。
公式:IF({价格} = 0, BLANK(), {价格})
运算结果:空值



ERROR()

在单元格内显示错误提示和信息。

ERROR(message)

参数说明

message:非必填,要输出的错误信息,缺省值为 “#Error!” 。


示例

// 不填写错误信息,直接输出错误提示。下列字段 {年纪} 是数字类型且单元格值为 -1 。
公式:IF({年纪} < 0, ERROR(), "正常")
运算结果:#Error!

// 填写错误信息,输出错误提示和信息。下列字段 {年纪} 是数字类型且单元格值为 -1 。
公式:IF({年纪} < 0, ERROR("统计错误"), "正常")
运算结果:#Error: 统计错误



IS_ERROR()

检查一个表达式是否运行错误,如果错误则返回真( true )。

IS_ERROR(expression)

参数说明

expression:是需要检查的表达式。表达式可以是算术运算、逻辑判断等类型。


示例

// 算术运算出现错误。
公式:IS_ERROR(2/0)
运算结果:true

// 文本与数字进行混合运算出现错误。
公式:IS_ERROR("哈哈"*2)
运算结果:true



NOT()

将逻辑条件反转。

NOT(logical)

参数说明

logical:是逻辑条件,经过逻辑条件运算结果一般为真( true )和假( false )。

本函数会将逻辑条件求反,例如: 如例子一:NOT( 2 > 3 ) 经过反转后实际是判断 2 <= 3; 如例子二:NOT({年纪} > 18) 经过反转后,实际是判断 {年纪} ≤ 18。


示例

// 将逻辑条件反转。如下列经过反转后实际是判断 2 <= 3。
公式:NOT(2 > 3)
运算结果:true

// 引入数字类型的字段 {年纪} ,将逻辑条件反转。如下列经过反转后实际是判断 {年纪} ≤ 18。 当单元格内值为 12。
公式:NOT({年纪} > 18)
运算结果:true