設計手冊
遇到問題了嗎?不用擔心,答案都在這。
全站搜尋

條件式公式

你可以使用條件式公式來設定符合條件下回傳欄位值。

公式列表

以下列出所有支援的公式。公式請一律用大寫表示!

公式 敘述
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 函數:判斷值

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。

IF 函數:何時要加上 .RAW?

1. 參照兩個欄位且判斷相等的條件

如果你的條件是利用「=」的運算符號來判斷兩個欄位是否相等的話,請在填寫條件的地方,將這兩個參照欄位後面加上.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」。

2. 在 IF 中與字串做相等比較的判斷條件

語法
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」。

3. 當公式中要區別空值與 0

例如公式為 IF(A8.RAW='',"TRUE","FALSE"),需判斷某個欄位是不是空的,而且那個欄位值可能會是 0 的時候,應加上 .RAW。

4. 參照的自由輸入欄位值為數字,想要將該數字以字串形式回傳

例如 A1「號碼」 是自由輸入欄位,值是 10001,A2「會員編號」是連結欄位,希望透過公式帶入 A1 的值,則可以在 A2 設定公式 IF(A1!="",A1.RAW) 。

IF 函數:擷取字串

如想要在 IF() 公式中擷取其他欄位的字串,像是公式 LEFT() 、 RIGHT() 、 MID () 等, 你必須先轉換該欄位為字串形式,系統才能正確擷取。轉換方式為在參照欄位後方加上「+""」。

範例:

假設你想要參照 A5 欄位的前兩位文字進行判斷,可以使用如下公式:IF(A1="Yes",A5,LEFT(A5+"",2)),如果欄位 A1 為 Yes ,則帶入 A5 欄位值;若 欄位 A1 不是 Yes ,則顯示 A5 欄位的首兩位文字。

IF 函數:参照 TODAY() 或 NOW() 的處理方式

目前因為系統限制,不支援將 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() 欄位會顯示為上次更新資料的時間。如果你希望可以每日自動重算以顯示最新的資料狀態,可以考慮寫程式讓公式每天重新計算

IF 函數:日期欄位

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 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。

AND 函數

當條件全部滿足時傳回 TRUE,在一個或多個條件不滿足時傳回 FALSE。

公式 語法
AND AND(logical1,[logical2],...)

AND 包含下列參數:

logical1:是必要的,這是第一項需要判斷回傳值為 TRUE 或 FALSE 的條件。

logical2:是非必要的,其他條件在被判斷時,也會影響回傳值為 TRUE 或 FALSE。

OR 函數

當任一個條件滿足時傳回 TRUE,在全部條件都不滿足時傳回 FALSE。

公式 語法
OR OR(logical1,[logical2],...)

OR 包含下列參數:

logical1:是必要的,其他邏輯條件像是logical2則非必要,這是第一項需要判斷回傳值為 TRUE 或 FALSE 的條件。

NOT 函數

當條件不滿足時傳回 TRUE,條件滿足時則傳回 FALSE。

公式 語法
NOT NOT(logical)

範例:

NOT(A2>10),如果 A2 欄位值小於或等於 10 的時候,系統會回傳「true」。欄位值大於 10 的時候,系統則會回傳「false」。

COUNTIF 函數

利用 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 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 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 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)的資料的金額做加總算出日期區間內訂單金額的總和。

The UPDATEIF 函式

可以利用 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() 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"。

提供回饋給 Ragic

請告訴我們您的意見:(多選, 必填)

請針對上方勾選項目提供詳細說明:

截圖能夠讓我們更清楚了解您的建議:

感謝您的寶貴意見!

馬上註冊
免費試用 Ragic!

用 Google 帳號註冊

立即科技 Ragic, Inc.
02-7728-8692
info@ragic.com
台北市中正區南昌路二段81號9樓
使用者條款 | 隱私權政策