 設計手冊
    設計手冊
  
  
  你可以使用條件公式來設定在符合條件時回傳特定欄位值,例如當條件符合時回傳「是」,或加總符合條件的欄位值。
以下列出所有支援的公式。公式請一律用大寫表示!
| 公式 | 敘述 | 
|---|---|
| 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 的值(住家地址),其他情況下,該欄位值會維持原本的欄位值,例如空值或之前儲存的值。