你可以使用条件式公式来设置符合条件下回传字段值。
以下列出所有支持的公式。公式请一律用大写表示!
公式 | 描述 |
---|---|
IF(value==condition,[value_if_true],[value_if_false]) | 依据条件回传值,符合某一个情况回传 TRUE,如果不是此情况则回传 FALSE。查看详细内容 |
IFS() | 检查多个条件符合,并传回第一个为 TRUE 的条件的对应值。查看详细内容 |
LOOKUP(value,lookup_list,[result_list]) | 在 lookup_list 搜索值,然后传回值所在 result_list 的位置。查看详细内容 |
AND(logical1, [logical2], ...) | 当条件全部满足时传回 TRUE,在一个或多个条件不满足时传回 FALSE。查看详细内容 |
OR(logical1, [logical2], ...) | 当任一个条件满足时传回 TRUE,在全部条件都不满足时传回 FLASE。查看详细内容 |
NOT(logical) | 当条件不满足时传回 TRUE,条件满足时则传回 FALSE。查看详细内容 |
COUNTIF(criterai_range,criteria) | 回传计算子表格中每一列符合判定标准的值总(次)数。查看详细内容 |
COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]...) | 回传计算附加的范围内符合其相关标准的值总(次)数。查看详细内容 |
SUMIF(range,criteria,[sum_range]) | 回传计算子表格中每一列符合判定标准的值总和。查看详细内容 |
SUMIFS(sum_range,criteria_range1,criteria1,[criteria_range2, criteria2],...) | 回传计算每一列符合多个判定标准的值总和。查看详细内容 |
UPDATEIF(condition,value_if_true) | 只有当条件符合的时候才更新字段值。查看详细内容 |
MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | 根据指定的一组条件或准则传回指定之单元格范围的最大值 |
MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | 根据指定的一组条件或准则传回指定之单元格范围的最小值 |
要特别注意字段种类可能会改变公式在某些情况下的计算方式。
有两种情况公式中条件的参照字段后面需要加上 .RAW:
1. 当条件式公式的条件是参照两个字段,并且用运算符号“=”来判断两个字段值是否相等时,需要在设置条件时将这两个参照字段后面加上 .RAW,如果是只参照一个字段,并利用运算符号“=”来判断等于一个固定的值,则不需要。
2. 当套用公式的字段是数字字段,要做数字运算,但是条件是参照字符串字段(字、选项、日期等),并用运算符号“=”来判断等于一个固定的字符串时,设置条件时参照的字符串字段要加上 .RAW。
何时要加上 .RAW 的详细内容可以参阅这篇。
日期字段会被以天数来计算。
你也可以利用多层的条件判断来写出 IF 公式。
IF 公式依据条件情况回传值,例如如果符合某一个情况则回传 TRUE,如果不是此情况则回传 FALSE。
公式 | 句法 |
---|---|
IF | IF(value==condition,[value_if_true],[value_if_false]) |
范例:
IF(A2==10,10,0),如果 A2 等于 10,这个值在这个字段将会是 10。若 A2 出现其他的值,则会回传 0。
IF(A1==1,'true','false'),如果 A1 等于 1,则会回传“true”。若 A1 出现其他的值,则回传“false”。
IF(A2>=60,'yes','no'),如果 A1 等于或大于 60,则会回传“Yes”,否则回传“No”。
备注:
Ragic仍然支持IF功能的旧句法。
Value=='condition'?'[value_if_true]':'[value_if_false]'
范例: A1=='open'?'O':'C'
如果 A1 是 open, 则出现 O,如果不是则出现 C。
如果你的条件是利用“=”的运算符号来判断两个字段是否相等的话,请在填写条件的地方,将这两个参照字段后面加上.RAW。
句法 |
---|
IF(field1.RAW=field2.RAW,[value_if_true],[value_if_false]) |
范例:
IF(A1.RAW=A2.RAW,1,0),如果 A1 的字段值等于 A2 的字段值,回传 1;否则回传 0。
IF(A1.RAW=A2.RAW,'Open','Closed'),如果 A1 的字段值等于 A2 的字段值,回传“Open”;否则回传“Closed”。
句法 |
---|
IF(string_field1.RAW="string",[numeric_value_if_true],[numeric_value_if_false]) |
范例:
IF(A1.RAW="Yes",1,0),如果 A1 的字段值等于字符串“Yes”,回传 1;否则回传 0。
如果你只参照一个数字字段,并利用运算符号“=”来判断是否等于一个固定的值,不需要另外加上 .RAW。
范例:
IF(A1=1,"YES","NO"),如果 A1 的字段值等于 1,回传“YES”;否则回传“NO”。
例如公式为 IF(A8.RAW='',"TRUE","FALSE"),需判断某个字段是不是空的,而且那个字段值可能会是 0 的时候,应加上 .RAW。
例如 A1“号码” 是自由输入字段,值是 10001,A2“会员编号”是链接字段,希望透过公式带入 A1 的值,则可以在 A2 设置公式 IF(A1!="",A1.RAW) 。
如想要在 IF() 公式中抽取其他字段的字符串,像是公式 LEFT() 、 RIGHT() 、 MID () 等, 你必须先转换该字段为字符串形式,系统才能正确抽取。转换方式为在参照字段后方加上“+""”。
范例:
假设你想要参照 A5 字段的前两位字进行判断,可以使用如下公式:IF(A1="Yes",A5,LEFT(A5+"",2)),如果字段 A1 为 Yes ,则带入 A5 字段值;若 字段 A1 不是 Yes ,则显示 A5 字段的首两位字。
目前因为系统限制,不支持将 TODAY() 或 NOW() 直接加入至 IF() 进行运算,你必须要另外新增一个字段先获取 TODAY() 或 NOW() 的值后再进行运算。
范例:
假设要将 A1 作为判断依据,评估数据是否还有效,那么你可以将 TODAY() 放在 A2 字段,并套用公式:IF(A1>A2,"Valid","Expired"),如果字段 A1 的值大于 TODAY() ,则显示“Valid”;若字段 A1 的值小于 TODAY() ,则显示“Expired”。
假设要将 A1 与 TODAY() 比较,可以将整个运算,例如 A1-TODAY() 放在 A2 字段,并套用公式:IF(A2>0,"Valid","Expired"),如果字段 A2 的值大于 0,则显示“Valid”;若字段 A1 的值小于 TODAY() ,则显示“Expired”。
注意:TODAY() 或 NOW() 并不会每日自动重算,因此遗留数据的 TODAY() 或 NOW() 字段会显示为上次更新纪录的时间。如果你希望可以每日自动重算以显示最新的数据状态,可以考虑写程序让公式每天重新计算。
1. 可以在非日期字段套用 IF 比较日期字段大小
例如 A1、A2 为日期字段,A2 套用 TODAY(),A4 选项字段套用 IF(A1>A2,"已逾期","未逾期")
2. 不能在非日期字段套用 IF 来运算日期字段值,必须另建数字字段来做加减运算
同上例,但 A4 的公式改为 IF(A1-1>A2,"已逾期,"未逾期") 会运行错误,在这情况下要另外创建两个数字字段: C1、C2,C1 套用 A1-1,C2 套用 A2,A4 公式改为 IF(C1>C2,"已逾期","未逾期")
你也可以使用 LOOKUP 公式在你希望附加条件的字段上,增加针对各个特殊条件的处理。
公式 | 句法 |
---|---|
LOOKUP | LOOKUP(value,[lookup_list],[result_list]) |
在 lookup_list 搜索值,然后传回值所在 result_list 的位置。
值是在 lookup_list 内搜索的值。
lookup_list是一个数组,如[0,100,500],LOOKUP 功能在这清单内搜索值。
result_list是自选的,它和 lookup_list 相同,如['Small','Medium','Large']。如果 result_list 参数被省略,LOOKUP 功能会传回在 lookup_list 的值。如果 LOOKUP 功能不能找到确切符合的值,它会选择回传在 result_list 内,小于或等于值之中最大的值。如果值小于所有在 result_list 里的值,则 LOOKUP 功能会传回空的条件。
范例:
LOOKUP(A1,[0,45,65],['Small','Medium','Large']),如果该字段 A1 的值在 0~44 之间,则该字段值就会是 Small,若值在 45~64 之间则会是 Medium,若值大于等于 65 则会是 Large。
多字段范例:
LOOKUP(A1,[0,45,65],[A3+A4,B5,B6]),如果 A1 在 0~44 之间,值是 A3+A4;在 45~64 之间值是B5;等于或超过 65,则值将会是 B6。
当条件全部满足时传回 TRUE,在一个或多个条件不满足时传回 FALSE。
公式 | 句法 |
---|---|
AND | AND(logical1,[logical2],...) |
AND 包含下列参数:
logical1:是必要的,这是第一项需要判断回传值为 TRUE 或 FALSE 的条件。
logical2:是非必要的,其他条件在被判断时,也会影响回传值为 TRUE 或 FALSE。
当任一个条件满足时传回 TRUE,在全部条件都不满足时传回 FALSE。
公式 | 句法 |
---|---|
OR | OR(logical1,[logical2],...) |
OR 包含下列参数:
logical1:是必要的,其他逻辑条件像是logical2则非必要,这是第一项需要判断回传值为 TRUE 或 FALSE 的条件。
当条件不满足时传回 TRUE,条件满足时则传回 FALSE。
公式 | 句法 |
---|---|
NOT | NOT(logical) |
范例:
NOT(A2>10),如果 A2 字段值小于或等于 10 的时候,系统会回传“true”。字段值大于 10 的时候,系统则会回传“false”。
利用 COUNTIF 来计算子表格中每一列符合判定标准的总数。例如,算出收据上的特定一项物品的总数。
公式 | 句法 |
---|---|
COUNTIF | COUNTIF(criteria_range,criteria) |
COUNTIF 有下列参数:
criteria_range:是必要的,范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria:是必要的,此标准会定义出哪些在 criteria_range 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
应用范例 | 输入范例 |
---|---|
指定数字 | "8" |
数字比较式 | "> 8"、"< 8"、"!= 8" |
指定字符串 | "apple" |
字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
COUNTIF 只能参阅单一个子表格的内容,并被设在独立的字段中。
COUNTIF 只能设一个标准。如果你有多个标准,可以使用COUNTIFS。
范例:
设在 A9 的公式 COUNTIF(A4,'苹果') 会回传子表格内每一行 A4 字段下产品名称是“苹果”的总数。
公式 | 句法 |
---|---|
COUNTIFS | COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]...) |
COUNTIFS 有下列参数:
criteria_range1:是必要的,范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria1:是必要的,此标准会定义出哪些在 criteria_range1 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
应用范例 | 输入范例 |
---|---|
指定数字 | "8" |
数字比较式 | "> 8"、"< 8"、"!= 8" |
指定字符串 | "apple" |
字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
criteria_range2, criteria2,...:是选择性的,计算附加的范围内符合其相关标准的值。
COUNTIFS 只能参阅单一个子表格的内容,并被设在独立的字段中。
利用 SUMIF 来算子表格中每一列符合判定标准的值其总和。例如,算出收据上的特定商品的总金额。
公式 | 句法 |
---|---|
SUMIF | SUMIF(range,criteria,[sum_range]) |
SUMIF 有下列参数:
range:是必要的,范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria:是必要的,此标准会定义出哪些在 range 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
应用范例 | 输入范例 |
---|---|
指定数字 | "8" |
数字比较式 | "> 8"、"< 8"、"!= 8" |
指定字符串 | "apple" |
字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
sum_range:是选择性的,如果您要加总的不是 range引数中指定的单元格,这便是要加总的实际单元格。如果省略 sum_range 引数,便会加总 range 引数中所指定的单元格 (即是套用准则的相同单元格)。
SUMIF 只能参阅单一个子表格的内容,并被设在独立的字段中。
SUMIF 只能设一个标准。如果你有多个标准,可以使用 SUMIFS。
范例:
在 A9 套用 SUMIF(A4,'苹果',B4),会回传子表格内每一行如果 A4 字段下产品名称是“苹果”时,其 B4 值的总和。
利用 SUMIFS 来算子表格中每一列符合多个判定标准的值其总和。例如,算出收据上在特定存货位置的特定商品的总金额。
公式 | 句法 |
---|---|
SUMIFS | SUMIFS(sum_range,criteria_range1,criteria1,criteria_range2, criteria2,...) |
SUMIFS 有下列参数:
sum_range:是必要的,范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria_range1:是必要的,criteria_range1 和 criteria1 设置了其中范围内的特定查找标准。一旦范围内的项目被找出,其相对应的值就会在 sum_range 被加进去。
criteria1:是必要的,此标准会定义出哪些在 criteria_range1 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
应用范例 | 输入范例 |
---|---|
指定数字 | "8" |
数字比较式 | "> 8"、"< 8"、"!= 8" |
指定字符串 | "apple" |
字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
criteria_range2,criteria2,...:是选择性的,计算附加的范围内符合其相关标准的值。 需特别留意的是,在 SUMIFS 中,条件(criteria)必须下在不同的字段。如果您是需要将条件下在同一字段中,例如加总当该字段等于 a 或是等于 b 的情况时,您必须要使用多个 SUMIF() 相加。另外,SUMIFS 只能参阅单一个子表格的内容,并被设在独立的字段中。
范例:在 A52 设置公式 SUMIFS(C45, B45, " > A50 ", B45 ," < A51 ") 会将子表格中订单日(B45)大于起始日(A50)以及小于结束日(A51)的数据的金额做加总算出日期区间内订单金额的总和。
可以利用 UPDATEIF 的条件公式,让该字段在条件不成立的情况下保有原本的字段值,并只在条件成立的情况下更新字段值。
公式 | 句法 |
---|---|
UPDATEIF | UPDATEIF(条件,字段值_如果_成立) |
范例
UPDATEIF(A2==10,10),如果A2等于10的时候,套有此公式的字段值会被更新成10。 如果 A2 的字段值不是 10 的任何情况下,,套有此公式的字段会保有之前所保存的值,并不会改变。
UPDATEIF(A2=='同住家地址',A1),如果 A2 的字段值为“同住家地址”的话,此字段(送货地址)的值则会是 A1 的值(住家地址),其他情况下,该字段值会维持原本的字段值,例如空值或之前保存的值。
如果是在你有多个条件的情况下,条件公式可以分层写出。
范例:
IF(A1==1,'Bad',IF(A1==2,'Good',IF(A1==3,'Excellent','No Valid Score')))
上面这个公式代表:
如果A1的值为 1, 回传结果"Bad"
如果A1的值为 2, 回传结果"Good"
如果A1的值为 3, 回传结果"Excellent"
如果A1的值为非上情况,则为"No Valid Score"。
范例:
IF( AND(A1.RAW=='YES',A2.RAW=='Jimmy'), C3*C7, IF( AND(A1.RAW=='YES',A2.RAW=='John'), C3*C8, IF( AND(A1.RAW=='YES',A2.RAW=='Jane'), C3*C9, C3*C10 ) ) )
上面这个公式代表:
如果A1的值为"YES",A2的值为"Jimmy",回传的结果为C3*C7
如果A1的值为"YES",A2的值为"John",回传的结果为C3*C8
如果A1的值为"YES",A2的值为"Jane",回传的结果为C3*C9
如果A1的值为非上述情况,则为C3*C10。
除了上述的嵌套状公式外,你也可以使用 IFS() 来编写多个条件的条件公式
公式 | 句法 |
---|---|
IFS() | IFS(value=condition1,value_if_true1,value=condition2,value_if_true2,...,
true,default value) |
IFS 公式需要包含下列几项参数:
value=condition1 是必要的,此为第一个检查条件
value_if_true1 是必要的,此为当符合第一个检查条件时回传的值
value=condition2 是必要的,此为第二个检查条件
value_if_true2 是必要的,此为当符合第二个检查条件时回传的值
*检查条件最少为两组,可依实际需求增加数量
true 是选择性的,若你需要设置默认值,则必须输入此参数,若无此需求则可省略
default value 是选择性的,此为若没有任何符合的检查条件时,系统必须回传的默认值
范例:
IFS(A1=1,"Bad",A1=2,"Good",A1=3,"Excellent",true,"No Valid Score")
上面这个公式同样代表:
如果A1的值为 1, 回传结果"Bad"
如果A1的值为 2, 回传结果"Good"
如果A1的值为 3, 回传结果"Excellent"
如果A1的值为非以上情况,则为"No Valid Score"。