Ragic 与 Excel 一样都可以编写公式进行运算,但 Ragic 的公式都是自行开发的,因此支持的公式或写法不一定相同,尤其编写公式时是直接参照字段首部。
公式不只能运算数字,也能计算字符串及日期。建议将需要进行公式运算的字段设置为对应的字段种类,例如:运行数值运算时,套用公式的字段就要设为数值或金额字段,系统才能正确判断公式并回传预期的结果,若套用公式的字段种类设置错误,则可能导致运算结果不如预期。
在表单页的设计模式下,点选字段首部后选择左侧列的公式,就可以输入公式。
例如在“销售订单”中的金额的公式为售价*数量,就在该空格中输入“C9*D9”。要注意公式要参照的单元格是首部所在的位置。
在有设置公式的字段右上方会显示 fx() 图符。
点击该图符的话,会将该公式的所有参照字段框选出来,以便快速查找。
更多公式可以查看支持的公式列表。注意:多选字段只能套用列表中的特定公式。
当不知道该输入什么公式时,可以在下方的公式小帮手输入你想要的规则和回传的数据,便可以藉由 AI 工具协助你写公式。
注意:私有主机版需要新增参数才可以打开此功能,详细说明请参阅此章节。
使用时请注意:
1. 请直接描述公式规则并描述这个字段要回传什么,如“回传今日日期”。
2. 如要表示字请在左右两边加上双引号,例如“"交易日"”。
3. 设置后请手动测试与重复验证结果是否符合需求。
点选下方的AI 帮我产公式。
便可以展开公式小帮手的接口,输入规则和回传的数据点击生成公式。
下方也有一些默认情境让你可以直接选择并根据你所设计的表单填入对应的字段。包含一般公式与签核公式。
例如:希望当“订单金额”大于“免运金额”时,“是否免运”的字段可以回传“是”,若没有大于则回传“否”时,可以先选择下方的如果“A1 大于 A2,传回 "Y",否则传回 "N"”,再修改成对应的字段以及回传值。
完成后点选生成公式,便会在下方生成对应的公式,点选公式旁的拷贝图符,系统会自动帮你把生成的公式填入上方的公式字段。
符号会决定如何运行运算。以一般运算来说,会遵循先乘除后加减的规则。但跟数学运算相同,你可以利用“括号 ()”来改变运算的顺序。但 Ragic 不能以冒号: 来加总单元格范围的值。
要运行基本的数学运算,像是加减乘除,请使用以下算数符号。
| 算数符号 | 意涵 | 例子 |
|---|---|---|
| + (加号) | 加法 | 3+3 |
| – (减号) | 减法 | 3–1 |
| * (星号/米字号) | 乘法 | 3*3 |
| / (斜线) | 除法 | 3/3 |
| ^ (插入符号) | 次方 | 3^2 |
你可以利用以下符号来比较两个值。你也能在条件公式中用这些符号来判断是否符合逻辑,然后显示 TRUE 或 FALSE。
| 比较符号 | 意涵 | 例子 |
|---|---|---|
| = | 等于 | A1=B1 |
| == | 等于 | A1==B1 |
| > | 大于 | A1 > B1 |
| < | 小于 | A1 < B1 |
| > = | 大于等于 | A1 > =B1 |
| < = | 小于等于 | A1 < =B1 |
| != | 不等于 | IF(A1!=B1,'yes','no') |
| <> | 不等于 | IF(A1<>B1,'yes','no') |
你可以用“'单引号'”或“"双引号"”标注公式中的字符串。我们将使用“'单引号'”来解说,但两种格式 Ragic 都支持。
以下列出 Ragic 支持的所有公式类别,可依需求参阅各类别的公式与应用说明。公式请一律用大写表示!
1. 数值运算公式
2. 日期与时间公式
3. 字符串公式
4. 条件公式
5. 子表格公式
6. 多选字段公式
7. 签核公式
用于计算数值、金额,例如获取总和、平均值、最大最小值等等。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| SUM(value1,[value2],...) | 传回字段值的总和,也可以直接采用 value+value2+... 的形式来呈现 |
| AVG(value1, value2,...) | 传回所有字段值的平均值,这个公式在子表格也可以使用,但是子表格的平均值包含所有字段值,并不只有子表格其中一列的字段值。用法和 AVERAGE 函数相同。 |
| AVERAGE(value1, value2,...) | 传回所有字段值的平均值,这个公式在子表格也可以使用,但是子表格的平均值包含所有字段值,并不只有子表格其中一列的字段值。用法和 AVG 函数相同。 |
| MIN(value) | 传回所有的字段值中最小的值,这个公式在子表格也可以使用。 |
| MAX(value) | 传回所有的字段值中最大的值,这个公式在子表格也可以使用。 |
| MODE.SNGL(value1,[value2],...) | 传回所有字段值中最常见的值,这个公式在一般字段、子表格及全域常量都可以使用。 |
| MODE.MULT(value1,[value2],...) | 传回所有字段值中最常见的值,当有多个众数时,可以回传多个结果,这个公式在一般字段、子表格及全域常量都可以使用。 |
| ABS(value) | 传回绝对值 |
| CEILING(value,[significance]) | 传回进位后的数字,到最接近之指定基数的倍数。significance 为选择性的,未指定则进位到最接近的整数值。范例:CEILING(2.5) 会传回 3;CEILING(1.5, 0.1) 则会回传 1.5。 |
| FLOOR(value,[significance]) | 传回舍去后的数字,到最接近之指定基数的倍数。significance 为选择性的,未指定则舍去到最接近的整数值。范例:FLOOR(2.5) 会传回 2;FLOOR(1.58, 0.1) 则会回传 1.5。 |
| ROUND(value) | 传回四舍五入后最接近的整数值 |
| ROUND(value,N) | 传回四舍五入到小数点第 N 位的数值 |
| ROUNDUP(value,N) | 传回无条件进位到小数点第 N 位的数值 |
| ROUNDDOWN(value,N) | 传回无条件舍去到小数点第 N 位的数值 |
| MROUND(value,multiple) | 传回四舍五入到最接近的 multiple 的倍数 |
| SQRT(value) | 传回该值的平方根 |
| COUNT(value1,value2,...) | 传回字段值的总数,用于一般字段时不会计入空值;用于子表格字段时则会计入空值 |
| PI() | 传回圆周率,约略等于 3.14159 |
| RAND() | 传回介于 0 到 1 之间的随机数值。查看详细内容。 |
| POWER(value,power) | 传回该值的次方值 |
| MOD(value,divisor) | 传回该值除以除数后的余数,此结果会跟除数带有相同的符号。查看详细内容。 |
| GCD(value1,[value2],...) | 传回这些数值的最大公因子,最大公因子是指能够整除这些值的最大整数。查看详细内容。 |
| LCM(value1,[value2],...) | 传回这些数值的最小公倍数,最小公倍数是指这些数值共通的最小整数倍正整数,使用这个公式来协助计算带有不同分母的分数。查看详细内容。 |
| PRODUCT() | 会乘上所有指定字段的数值并且忽略空值及非数字的值,除了可以指定一般字段相乘外,参照子表格字段则可以将该字段的所有数值相乘。查看详细内容。 |
| PMT(rate, nper, pv, [fv], [type]) | 此公式用来计算贷款或投资每期需要投入的金额。 查看详细内容。 |
用来获取日期与时间相关数据,例如传回年月日、时间、指定工作日等等。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| TODAY() | 传回目前日期。如需做为每日公式重算的参照字段,建议使用 TODAYTZ() 代替 TODAY() |
| TODAYTZ() | 传回根据帐号设置中公司所在时区的目前日期 |
| NOW() | 传回目前日期和时间 |
| NOWTZ() | 传回根据帐号设置中公司所在时区的目前日期和时间 |
| EDATE(start_date, months) | 传回代表日期的连续数字,为指定时间(start_date)之前或之后几个月份(months)该日期的数字。查看详细内容。 |
| EOMONTH(start_date, months) | 传回代表指定日期(start_date)之前或之后月份(months)最后一天日期的连续数字。查看详细内容。 |
| YEAR() | 传回日期字段的年份 |
| MONTH() | 传回日期字段的月份 |
| DAY() | 传回日期字段的日 |
| DATE(year,month,day) | 结合三个参照数字字段的值,回传一个日期。为避免混淆,年份的字段请使用四位数的值 |
| WEEKDAY() | 传回一周内的第几天,以数字显示从第 1 天(星期天)到第 7 天(星期六) |
| WORKDAY(start_date,days,["holidays"], [makeup_workdays]) | 会传回代表日期 (起始日期) 不包含周末及指定假日(以及指定哪几天是工作日)之前或之后指定工作日数的日期。查看详细内容。 |
| WORKDAY.INTL(start_date,days,[weekend_no],["holidays"], [makeup_workdays]) | 使用参数指出哪几天和多少天是周末(及指定哪几天是工作日),以传回代表日期 (起始日期) 之前或之后指定工作日数的日期。查看详细内容。 |
| NETWORKDAYS(start_date,end_date,["holidays"], [makeup_workdays])) | 会传回 start_date 与 end_date 间不包含假日(周末、指定假日)以及指定哪几天是工作日的全部工作日数。查看详细内容。 |
| NETWORKDAYS.INTL(start_date,end_date,[weekend_no],["holidays"], [makeup_workdays]) | 使用参数指出哪几天和多少天是周末(及指定哪几天是工作日),以传回两个日期之间的所有工作日数。查看详细内容。 |
| ISOWEEKNUM(date) | 计算该日期为该年的第几周,星期一为该周第一天。 |
| WEEKNUM(serial_number,[return_type]) | 计算该日期为该年的第几周,每周起始日可以自订。查看详细内容。 |
| DATEVALUE(date_text, date_format) | 套用在日期(时间)字段,将参照的字符串转成日期(时间)值回传,“date_text”要是固定的日期字符串或参照的字符串字段,“date_format”要是参照的日期字符串格式。例如 A1 字符串的字段值是“2019/02/01”,希望可以将此转成日期字段值的话,可在日字段套用公式“DATEVALUE(A1,"yyyy/MM/dd")”来获取转换后的结果 |
| HOUR() | 此公式支持三种用法: 1. 参数带入 0-1,传回 24 小时的比例。例如:HOUR(0.5)=12。 2. 参数带入日期字段,传回该字段的小时。例如:A9 字段值为 18:11:19,HOUR(A9)=18。 3. 参数带入日期字符串,传回字符串中的小时。例如:HOUR("2020/10/13 17:34:56")=17 |
| MINUTE() | 此公式支持三种用法: 1. 参数带入 0-1,传回 60 分钟的比例。例如:MINUTE(0.5)=30。 2. 参数带入日期字段,传回该字段的分钟。例如:A9 字段值为 18:11:19,MINUTE(A9)=11。 3. 参数带入日期字符串,传回字符串中的分钟。例如:MINUTE("2020/10/13 17:34:56")=34 |
| SECOND() | 此公式支持三种用法: 1. 参数带入 0-1,传回 60 秒的比例。例如:SECOND(0.75)=45。 2. 参数带入日期字段,传回该字段的秒。例如:A9 字段值为18:11:19,SECOND(A9)=19。 3. 参数带入日期字符串,传回字符串中的秒。例如:SECOND("2020/10/13 17:34:56")=56。 |
| TIME(hour, minute, second) | 传回特定时间的小数,所传回的小数点数字是介于 0 到 0.99988426 之间的值,代表自 0:00:00 到 23:59:59 的时间。
Hour 代表小时的数字,范围从 0 到 32767。任何比 23 大的值将会除于 24,且余数视为小时值。例如:TIME(27,0,0) = TIME(3,0,0) = 0.125 或 3:00 AM。 Minute 代表分钟的数字,范围从 0 到 32767。任何大于 59 的值将会转换成小时和分钟。例如:TIME(0,750,0) = TIME(12,30,0) = 0.520833 或 12:30 PM。 Second 代表秒钟的数字,范围从 0 到 32767。任何大于 59 的值将会转换成小时、分钟和秒钟。例如:TIME(0,0,2000) = TIME(0,33,22) = 0.023148 或 12:33:20 AM。 |
用来获取字段值字符串或是查阅检查字段内容,例如获取字符串的字符、替换大小写、确认空值等等。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| LEFT(value,length) | 取出某一字符串由左往右的字符,若长度为 3,则会取出由左往右的 3 个字符。查看详细内容。 |
| RIGHT(value,length) | 取出某一字符串由右往左的字符,若长度为 3,则会取出由右往左的 3 个字符。查看详细内容。 |
| MID(value,start,[length]) | 取出某一字符串的指定字符数,起始字符为 0。例如:字段 A1 的值为 ABCD,另一字段套用 MID(A1,1,2),回传的结果为 BC。查看详细内容。 |
| FIND(find_text,within_text,[start_num]) | 在某个字字符串内找到另一个字字符串,并传回该字字符串在第一个字字符串中的起始位置。查看详细内容。 |
| LEN(value) | 取出某一字符串的长度(字符数)。查看详细内容。 |
| UPPER(value)/TOUPPERCASE(value) | 在不更动源值的情况下,用大写字母传回该值 |
| LOWER(value)/TOLOWERCASE(value) | 在不更动源值的情况下,用小写字母传回该值 |
| PROPER(value) | 将英文首字母转换为大写,并将非首字母改为小写 |
| SUBSTITUTE(text,old_text,new_text,[instance_num]) | 将字字符串中的 old_text 部分以 new_text 替换 |
| TEXT(value, format_text) | 以格式代码来套用格式,藉此变更数字显示的方式。查看详细内容。 |
| REPT(value,number_times) | 回传以指定次数重复的值。查看详细内容。 |
| SPELLNUMBER(number, [lang], [option]) | 在正式的文档中或是某些情况下会有使用一般字的数字来代替阿拉伯数字的情况。例如:以“壹佰”来表示 100。
如有这样的需求即可使用 SPELLNUMBER 公式来转换。详细的写法可以参阅这篇 |
| TRIM() | 移除字段值首尾的全角、半角空格,同时中间如果有连续的全角、半角空格,只保留第一个空格。范例:TRIM(" a c") 会得到 "a c"(半a全半半半c,仅保留a全c) |
| CHAR(number) | 使用 CHAR 将您从其他类型计算机上所获取之文件的字码页代码转换成字符。例如 CHAR(10) 会回传换行,CHAR(32) 会回传空格 |
| ISBLANK() | 检查参照的字段是否为空值,可以直接参照指定字段或用于条件公式中,例如:ISBLANK(A2) 或 IF(ISBLANK(A2), 'Y', 'N') |
用来设置在符合条件时回传特定字段值,例如当条件符合时回传“是”,或加总符合条件的字段值。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| 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], ...) | 根据指定的一组或多组条件传回指定之子表格范围的最小值。查看详细内容。 |
用来获取子表格字段相关数据,例如传回子表格第几笔数据、获取不重复或是非空值的子表格列数等等。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| FIRST(value) | 传回子表格此字段中的第一笔数据。查看详细内容。 |
| FIRSTA(value) | 传回子表格此字段中非空值的第一笔数据。查看详细内容。 |
| LAST(value) | 传回子表格此字段中的最后一笔数据。查看详细内容。 |
| LASTA(value) | 传回子表格此字段中非空值的最后一笔数据。查看详细内容。 |
| SUBTABLEROW(value,nth_row) | 只能套用在一般独立字段,回传子表格中指定之第几笔数据的值。查看详细内容。 |
| COUNTA(value) | 回传计算子表格中每列中指定字段不是空值的总(次)数。当公式指定字段非空值时即会计算,即使该列其他字段有空值时也会计算,不需要整列都非空值。查看详细内容。 |
| RUNNINGBALANCE(value, [allow_backend_formula_recalculation=false]) | 回传子表格中指定栏中该列与前面数据列加总的值,如果填 true 则该公式能被后端公式重算(子表格数据需照顺序新增)。查看详细内容。 |
| LARGE(arg, nth, ["arg2"]) | 指定查询子表格中某字段数值的指定序数大小对应值,并回传该数值或同列中指定字段的内容。查看详细内容。 |
| UNIQUE() | 列出参照子表格字段中所有不重复的字段值。查看详细内容。 |
| UNIQUE().length | 计算参照子表格字段中不重复的值的数量。查看详细内容。 |
| VLOOKUP() | 回传子表格中符合指定条件的值。查看详细内容。 |
在多选字段(从菜单多选、图片上载多选、文件上载多选)中,可套用特定公式进行判断与检查,例如确认是否包含指定项目、找出未包含的项目,或统计已上载的附件数量。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| INCLUDES_ALL(多选/多图片/多文件字段, value1, value2,...) | 若字段中选项同时包含所有列出的 value(可为任意字段型态或值),则回传 true。 |
| NOT_INCLUDES_ALL(多选/多图片/多文件字段, value1, value2,..) | 若字段中选项未同时包含所有列出的 value(可为任意字段型态或值),则回传 true,结果等同于 INCLUDES_ANY 的相反值。 |
| INCLUDES_ANY(多选/多图片/多文件字段, value1, value2,...) | 若字段中选项至少包含任一列出的 value(可为任意字段型态或值),则回传 true。 |
| NOT_INCLUDES_ANY(多选/多图片/多文件字段, value1, value2,...) | 若字段中选项未包含任一列出的 value(可为任意字段型态或值),则回传 true,结果等同于 INCLUDES_ALL 的相反值。 |
| ITEMS_COUNT(多选/多图片/多文件字段) | 回传多选字段中值的数量。例如:多选字段选择三个选项时回传 3;文件上载字段有两个文件时回传 2。 |
用来在表单有设置签核流程时,回传与签核相关的数据。详细公式说明与应用方式请参阅此章节。
| 公式 | 描述 |
|---|---|
| APPROVAL.COUNT() | 传回签核的总层次数。 |
| APPROVAL.STATUS() | 传回签核的状态。 |
| APPROVAL.SUBMITTER() | 传回开始签核的用户E-mail。可以套用在用户字段。 |
| APPROVAL.SUBMITTERNAME() | 传回开始签核的用户名称。 |
| APPROVAL.SUBMITDATE([true]) | 传回开始签核的日期和时间。可以套用在日期字段上。详细说明请参阅此章节。 |
| APPROVAL.FINISHDATE([true]) | 传回签核结束的日期和时间。签核“结束”指的是全部签核人都同意或是有人拒绝签核,可以套用在日期字段上。详细说明请参阅此章节。 |
| APPROVAL.CURRENTSTEPINDEX | 目前这一层次的索引值。从 0 开始,0 代表尚未开始签核,开始签核后会变成 1,代表第 1 阶。每次完成一层次的签核时这个值都会加 1,直到总层次数为止。当结束签核(全部层次都同意/或某一阶拒绝/或撤销签核)时也传回 0。 |
| APPROVAL.STEP([stepIndex]).NAME() | 传回这一层次的名称。 |
| APPROVAL.STEP([stepIndex]).STATUS() | 传回这一层次的状态。 |
| APPROVAL.STEP([stepIndex]).USERS() | 传回这一阶所有的签核人。范例值: 王小美|李晓明|彭大海。可以将此公式套用在用户多选字段(因为目前多选字段不支持套用公式,请先设置好公式,再点选多选设置)。 |
| APPROVAL.STEP([stepIndex]).UNSIGNEDUSERS() | 传回这一阶未签核的人。范例值:王小美|李晓明|彭大海。可以将此公式套用在用户多选字段(因为目前多选字段不支持套用公式,请先设置好公式,再点选多选设置)。 |
| APPROVAL.STEP([stepIndex]).SIGNEDUSERS() | 传回这一阶已同意签核的人。范例值: 王小美|李晓明|彭大海。可以将此公式套用在用户多选字段(因为目前多选字段不支持套用公式,请先设置好公式,再点选多选设置)。 |
| APPROVAL.STEP([stepIndex]).ISMULTI() | 传回这一阶是否为多人签核。会回传 true 或 false。 |
| APPROVAL.STEP([stepIndex]).THRESHOLD() | 传回这一阶的择办人数。如果这阶是单人签核或是没有设置择办人数,值为 -1。 |
| APPROVAL.STEP([stepIndex]).SIGNEDCOUNT() | 传回这一阶已同意签核的人数。 |
| APPROVAL.STEP([stepIndex]).RESP([email]) | 传回这一层次的结果。查看详细内容。 |
| APPROVAL.STEP([stepIndex]).COMMENT([email]) | 传回这一阶的签核人在同意或拒绝签核时留下的理由。如果还没同意或拒绝签核,或是做了这两个动作但没有留下理由,回传空值。查看详细内容。 |
| APPROVAL.STEP([stepIndex]).SIG([email]) | 传回这一阶的签核人的电子签名。值为 base64 图片网址字符串,如果没有签名传回空值。可以将这公式套用在图片字段上。查看详细内容。 |
| APPROVAL.STEP([stepIndex]).SIGIMG([email], [width], [height]) | 传回这一阶的签核人的电子签名。类似APPROVAL.STEP([stepIndex]).SIG([email]),只是这公式的值为bbcode [image],width 与 height 为可选参数,设置图片的宽与高,如果没设置,默认宽为 300px 高为 150px。可以配合 bbcode 公式将结果呈现在字描述上。 |
| APPROVAL.STEP([stepIndex]).ACTIONDATE([email],[true]) | 传回这一阶签核人同意或拒绝的日期和时间,套用在日期字段。查看详细内容。 |
| APPROVAL.STEP([stepIndex]).COMMENTDATE([email],[true]) | 传回这一阶的签核人在同意或拒绝签核时写下理由的日期和时间。如果还没同意或拒绝签核,或是做了这两个动作但没有留下理由,回传空值,可以将这公式套用在日期字段上。查看详细内容。 |
在 Ragic 中公式是在参照字段被编辑时触发,并将运算结果保存下来。如果改变了公式,但没有重新编辑参照字段,新公式就不会被触发,既存的数据也不会依据新公式重新计算。这样设计的原因是先前根据旧公式所计算出来的数据还是有效的,不应该因为更新了公式而自动更改已经保存的数据。像是一张计算税收的表单,因为最近税率改变而更改公式,但先前保存的税收数据还是应该要以旧税率来计算没错。
某些情况下可能会需要用最新的公式将旧数据都重算一遍。你可以进入设计模式,到想要重新运行的公式中,看到两个选项:“套用这个公式到所有数据(重算单一公式)”、“套用表单上所有公式到所有数据(重算所有公式)”,根据需求选择想要重算的方式。如果你是在设计模式下修改、新增公式,记得要先保存设计再单击公式重算喔!
除了透过手动套用公式重算,也可以透过自己写程序来运行公式重算。另外如果需要常常更改特定公式或是有用到 TODAY(),可以考虑透过 Daily Workflow 来运行公式每天重新计算。
注意:透过 Workflow 公式重算,会有以下两种情况不计入数据修改纪录。
1. 公式重算后,没有任何一个字段的字段值被修改。
2. 因效能考量,系统会自动判断运算笔数,如超过 3500 笔,就不会写入修改纪录(实际上数据有正常运行重算,只是不会显示于修改纪录)。
在输入数据并保存时,若希望能触发有相关链接的表单公式重算的话,你可以在表单页设计模式左侧工具条中的表单设置 下的表单设置勾选保存时触发源表单(默认已勾选)或相关表单的全部公式重算。
关于源表单及相关表单的说明,请参阅下图范例:
源表单:A、B 为 C 的源表单。任何表单只要有子表格生成新表单,它们即为新表单的源表单;任何表单只要有显示从其他表单的链接,它们即为其他表单的源表单。
相关表单:B、C 为 A 的相关表单;A、C 为 B 的相关表单。两张表单若不是多版本表单且共享同样的子表格,它们即为相关表单;而子表格生成的新表单或显示从其他表单的链接之来源表单也是属于它们的相关表单。
注意:目前相关表单公式重算上限为 1000 笔数据,若需重算的数据超过系统限制,则会自动跳过运行,所有相关表单数据都不会进行公式重算。
以下是针对 源表单(母表单)、子表单、相关表单的设计概念示意图:
公式同样能在描述字段使用,但该字段只会显示出计算的结果,其值不会存进系统里面。
这对每次点进表单页都需要看到公式实时重算结果的人相当有用,可以参照 BBCode [formula]。
例如:要利用一个人的生日来计算年龄,只需要在字段描述中使用公式 [formula](TODAY() - A1)/365.25[/formula],如此一来他的年龄就会依据今天的日期重算了!
关于 Ragic 支持的 Math 物件,请参阅这篇。
如果新增公式的建议,欢迎来信至 Ragic Support 。