你可以使用条件公式来设置在符合条件时回传特定字段值,例如当条件符合时回传“是”,或加总符合条件的字段值。
以下列出所有支持的公式。公式请一律用大写表示!
| 公式 | 描述 |
|---|---|
| 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。查看详细内容。 |
| UPDATEIF(condition,value_if_true) | 只有当条件符合的时候才更新字段值。查看详细内容。 |
| 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],...) | 回传计算子表格中每一列符合多个判定标准的值总和。查看详细内容。 |
| 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,"已逾期","未逾期")
利用 COUNTIF 来计算子表格中每一列符合判定标准的总数。例如,算出收据上的特定一项物品的总数。
| 公式 | 句法 |
|---|---|
| COUNTIF | COUNTIF(criteria_range,criteria) |
参数说明:
criteria_range(必要):范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria(必要):此标准会定义出哪些在 criteria_range 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
| 应用范例 | 输入范例 |
|---|---|
| 指定数字 | "8" |
| 数字比较式 | "> 8"、"< 8"、"!= 8" |
| 指定字符串 | "apple" |
| 字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
| 指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
| 指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
注意:此函数只能参阅单一个子表格的内容,并套用在独立字段中。仅支持一组条件,若需多重条件,请使用 COUNTIFS 函数。
范例:
设在 A9 的公式 COUNTIF(A4,'苹果') 会回传子表格内每一行 A4 字段下产品名称是“苹果”的总数。
| 公式 | 句法 |
|---|---|
| COUNTIFS | COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]...) |
参数说明:
criteria_range1(必填):范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria1(必填):此标准会定义出哪些在 criteria_range1 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
| 应用范例 | 输入范例 |
|---|---|
| 指定数字 | "8" |
| 数字比较式 | "> 8"、"< 8"、"!= 8" |
| 指定字符串 | "apple" |
| 字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
| 指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
| 指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
criteria_range2, criteria2,...(选填):计算附加的范围内符合其相关标准的值。
注意:此函数只能参阅单一个子表格的内容,并套用在独立字段中。
利用 SUMIF 来算子表格中每一列符合判定标准的值其总和。例如,算出收据上的特定商品的总金额。
| 公式 | 句法 |
|---|---|
| SUMIF | SUMIF(range,criteria,[sum_range]) |
参数说明:
range(必填):范围必须是在子表格内的字段并确认其值是否符合相关的标准。
criteria(必填):此标准会定义出哪些在 range 内的单元格会被加入。可以一个数字、表达式、参阅其他字段的值,或是字串来决定哪些单元格会被列入计算。参阅下表:
| 应用范例 | 输入范例 |
|---|---|
| 指定数字 | "8" |
| 数字比较式 | "> 8"、"< 8"、"!= 8" |
| 指定字符串 | "apple" |
| 字符串不等式 | "!='apple'"(外面引号与里面引号要为不同引号,例如外面一组双引号里面一组单引号) |
| 指定子表格字段 | A4 (不用加上一组双引号或是加上“=”,直接写该字段即可) |
| 指定与子表格字段比较 | "> A4"、"< A4"、"!=A4" |
sum_range(选填):如果要加总的不是 range 参数中指定的单元格,这便是要加总的实际单元格。如果省略 sum_range 参数,便会加总 range 引数中所指定的单元格 (即是套用准则的相同单元格)。
注意:此函数只能参阅单一个子表格的内容,并套用在独立字段中。仅支持一组条件,若需多重条件,请使用 SUMIFS 函数。
范例:
在 A9 套用 SUMIF(A4,'苹果',B4),会回传子表格内每一行如果 A4 字段下产品名称是“苹果”时,其 B4 值的总和。
利用 SUMIFS 来算子表格中每一列符合多个判定标准的值其总和。例如,算出收据上在特定存货位置的特定商品的总金额。
| 公式 | 句法 |
|---|---|
| SUMIFS | SUMIFS(sum_range,criteria_range1,criteria1,criteria_range2, criteria2,...) |
参数说明:
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() 相加。
注意:此函数只能参阅单一个子表格的内容,并套用在独立字段中。
范例:在 A52 设置公式 SUMIFS(C45, B45, " > A50 ", B45 ," < A51 ") 会将子表格中订单日 (B45) 大于起始日 (A50) 以及小于结束日 (A51) 的数据的金额做加总算出日期区间内订单金额的总和。
MAXIFS 函数可根据一个或多个条件,从指定范围中找出符合条件的最大值。常用于找出最高售价、最大金额或最新日期等情境。
| 公式 | 句法 |
|---|---|
| MAXIFS | MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) |
参数说明:
max_range(必填):要找出最大值的子表格字段范围。
criteria_range1(必填):第一个条件的范围,用来筛选符合条件的数据。
criteria1(必填):第一个条件,用于筛选 criteria_range1 中的数据,可为数值、字或公式。
[criteria_range2, criteria2](选填):额外的条件范围与条件组,可设置多组条件来筛选 max_range,只有同时符合所有条件的数据才会被计算最大值。
范例 1(单一条件):找出指定品项的最高单价
在报价纪录表中,若要查询“笔记本”的最高单价,可输入:MAXIFS(“单价”字段, “品项”字段, "笔记本")。

范例 2(多重条件):依指定类别与供应商回传最高单价
若要找出类别为“文具”且供应商为“A 供应商”的最高单价,可输入:MAXIFS(“单价”字段, “类别”字段, "文具", “供应商”, "A")。
系统会在同时符合两项条件的数据中回传最高值。

| 公式 | 句法 |
|---|---|
| MINIFS | MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) |
参数说明:
min_range(必填):要找出最小值的子表格字段范围。
criteria_range1(必填):第一个条件的范围,用来筛选符合条件的数据。
criteria1(必填):第一个条件,用于筛选 criteria_range1 中的数据,可为数值、字或公式。
[criteria_range2, criteria2](选填):额外的条件范围与条件组,可设置多组条件来筛选 min_range,只有同时符合所有条件的数据才会被计算最小值。
范例 1(单一条件):找出指定品项的最低单价
在报价纪录表中,若要查询“笔记本”的最低单价,可输入:MINIFS(“单价”字段, “品项”字段, "笔记本")。

范例 2(多重条件):依指定类别与供应商回传最低单价
若要找出类别为“文具”且供应商为“A 供应商”的最低单价,可输入:MINIFS(“单价”字段, “类别”字段, "文具", “供应商”, "A")。
系统会在同时符合两项条件的数据中回传最低值。

如果是在你有多个条件的情况下,条件公式可以分层写出。
范例:
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) |
参数说明:
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”。
LOOKUP 函数可根据指定的数值范围或条件,自动回传对应的结果。
| 公式 | 句法 |
|---|---|
| LOOKUP | LOOKUP(value,[lookup_list],[result_list]) |
value(必填):要搜索的字段值,系统会在 lookup_list 中查找与此值相符或接近的项目。
[lookup_list](必填):是一个数组,如[0,100,500],LOOKUP 功能在这清单内搜索 value。
result_list(选填):用于指定在找到符合条件的值后,系统应回传的结果。其项目数量与 lookup_list 相同,例如:["Small", "Medium", "Large"]。
若省略此参数,LOOKUP 函数将回传 lookup_list 中的值。若未找到完全相符的值,系统会回传 lookup_list 中小于或等于指定值的最大值所对应的结果。若指定值小于所有 lookup_list 中的值,函数将回传空白。
范例 1:LOOKUP(A1, [0,45,65], ['Small','Medium','Large'])
当 A1 的值介于 0 至 44 时,回传 Small;
介于 45 至 64 时,回传 Medium;
大于或等于 65 时,回传 Large。
范例 2(多字段结果):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],...) |
参数说明:
logical1(必填):第一项需要判断回传值为 TRUE 或 FALSE 的条件。
logical2(选填):其他条件在被判断时,也会影响回传值为 TRUE 或 FALSE。
当任一个条件满足时传回 TRUE,在全部条件都不满足时传回 FALSE。
| 公式 | 句法 |
|---|---|
| OR | OR(logical1,[logical2],...) |
参数说明:
logical1(必填):第一项需要判断回传值为 TRUE 或 FALSE 的条件。
logical2(选填):其他条件在被判断时,只要其中任一条件为 TRUE,整体回传值即为 TRUE。
当条件不满足时传回 TRUE,条件满足时则传回 FALSE。
| 公式 | 句法 |
|---|---|
| NOT | NOT(logical) |
范例:
NOT(A2>10),如果 A2 字段值小于或等于 10 的时候,系统会回传“true”。字段值大于 10 的时候,系统则会回传“false”。
让该字段在条件不成立的情况下保有原本的字段值,并只在条件成立的情况下更新字段值。
| 公式 | 句法 |
|---|---|
| UPDATEIF | UPDATEIF(condition,value_if_true) |
参数说明:
condition(必填):用来决定字段是否要被更新的条件。当条件成立时,字段会被更新;条件不成立时,字段保持原本的值。
value_if_true(必填):当条件成立时,要更新成的值,可以是固定数值、字或参照其他字段的值。
范例:
UPDATEIF(A2==10,10),如果A2等于10的时候,套有此公式的字段值会被更新成10。 如果 A2 的字段值不是 10 的任何情况下,,套有此公式的字段会保有之前所保存的值,并不会改变。
UPDATEIF(A2=='同住家地址',A1),如果 A2 的字段值为“同住家地址”的话,此字段(送货地址)的值则会是 A1 的值(住家地址),其他情况下,该字段值会维持原本的字段值,例如空值或之前保存的值。