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(value1, value2,...) | 傳回所有欄位值的平均值,這個公式在子表格也可以使用,但是子表格的平均值包含所有欄位值,並不只有子表格其中一列的欄位值。 |
| 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 。