好好的 IF 跟 IFS 不用,為什麼要用 SWITCH?因為優點有這幾個:
- 函式比較好讀
- 函式結構簡單,比較彈性、能輕鬆管理
- 能一次套用在大範圍上,有 ArrayFormula 的效果
- 如果有條件不符合的狀況,可設定預設值
SWITCH 當然也有最大的缺點:不能處理邏輯運算,所以大於、小於、AND、OR 等等的都不行,這時還是得用 IF 或IFS。
馬上來看看 SWITCH 怎麼寫吧!
語法說明
=SWITCH(判斷範圍, 關鍵字 1, 結果 1, [關鍵字 2, 結果 2, ...], [預設值])
- 判斷範圍:你要做條件判斷的範圍
- 關鍵字 1、結果 1:在判斷範圍裡中讓試算表判斷的關鍵字、和要相對應回傳的結果,這兩個參數要成雙成對的出現。舉例來說:
關鍵字是「apple」→ 回傳「蘋果」
關鍵字是「video」→ 回傳「影片」
"Mr. Sheet" → "喜特先生"
- 關鍵字 2、結果 2:選填,開始指定第二組關鍵字與結果。你可以再繼續往後指定第三組、第四組、第N組關鍵字與結果。
- 預設值:選填,如果判斷範圍裡面裡都沒有關鍵字,就回傳這個值。你可以寫「無相符值」、「N/A」、「找不到」等等的。
來實際看看怎麼做吧!
範例
假設我們有N位同學參加了全校教室清潔錦標賽的小組賽,這是他們的評分。歡迎複製這個
試算表一起跟著做!
我們想讓評分是「優」跟「甲」的同學晉級決賽,其他的話就列為淘汰。
怎麼寫呢?我們要給 SWITCH 判斷的欄位是 B 欄的「評分」,再來就是給 SWITCH 關鍵字,告訴它遇到不同關鍵字的時候該怎麼處理。
用 SWITCH 寫的話,就是:
=SWITCH(B2:B, "優", "入選", "甲", "入選", "乙", "淘汰", "丙", "淘汰", "丁", "淘汰")
在寫這種長函式的時候,你還可以搭配 Ctrl/Command+Enter 斷行,讓它更好讀一點:
=SWITCH(B2:B, "優", "入選", "甲", "入選",
"乙", "淘汰", "丙", "淘汰", "丁", "淘汰")
痛快按下 Enter,這樣就做完了!
按 Enter 後會發現,SWITCH 會把整個名單都判斷完,你就不需要一個個複製函式到下面的儲存格了。
換個方法想
如果你覺得上面的語法好像還是太長了,你也可以這樣想:因為我們最終要的只有「入選」與「淘汰」兩種,換句話說只要 SWITCH 在判斷完入選的「優」和「甲」之後,如果沒有關鍵值,就讓它回傳預設值「淘汰」就好了。
也就是:
=SWITCH(B2:B, "優", "入選", "甲", "入選", "淘汰")
SWITCH 會把「優:入選」、「甲:入選」配成一對,而最後的「淘汰」因為沒有其他配對,就會被 SWITCH 視為預設值。你把這段貼過去的話,會發現結果一模一樣唷!
跟 IF 和 IFS 比較
這是用 IF 的寫法,給你參考:
=ArrayFormula(
IF(B2:B = "優", "入選",
IF(B2:B = "甲", "入選", "淘汰"))
)
這是我用 IFS 的寫法:
=ArrayFormula(
IFNA(
IFS(B2:B = "優", "入選", B2:B = "甲", "入選"), "淘汰")
)
跟剛剛的 SWITCH 相比:
=SWITCH(B2:B, "優", "入選", "甲", "入選", "淘汰")
你會發現不管是用 IF 還是 IFS,要寫的部分變多了,而且要指定 B2:B 兩次。SWITCH 相對優雅,之後如果要再更改也比較容易。
所以就結論來看:
- 如果你只要透過直接的配對得到結果(A = 1、B = 2、C = 3 等等),用 SWITCH。
- 如果你想用邏輯判斷,用 IF 或 IFS 吧!
說個跟教學無關的題外話,最近追蹤人數要破百、瀏覽量也快破十萬了。如果你覺得這篇文章、這個專題有幫助,歡迎你多多轉發、把我的內容分享給更多人知道,先謝謝你了!
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!