AND
、OR
、NOT
在試算表函式裡是很方便的函式。我們常用它們來做多條件判斷,搭配 IF
、IFS
或常用條件式格式、資料驗證這些功能,來完成比較複雜的邏輯判斷需求。
不過其實這樣的「多條件判斷」或許已經在你我的生活裡常常發生。讓我舉個情境給你聽聽!
假設我在某天上班的途中,剛好經過一間便利商店,打算買早餐來吃。我踏入便利商店後,心想:
「如果我錢包裡有 100 塊以上,且飯糰類有買一送一的活動的話,
那我就要買飯糰。」
「好欸,錢包裡還有 300 塊!」我檢查了一下自己的錢包。
再來我走到鮮食區,抬頭一看,發現今天正好有飯糰類買一送一的活動。
最後我就買了飯糰,走出便利商店,繼續趕路了。
你發現了嗎?在這則短短的故事裡,其實就有一個多條件判斷了。回顧一下:
條件 A:錢包裡的錢是否大於 100 塊
條件 B:飯糰類有無買一送一的活動
→ 如果兩個條件都成立的話,就會買飯糰
這裡的「條件 A」跟「條件 B」就是多條件,而「如果兩個條件都成立就做什麼事」就是判斷了。
如果到這邊都沒問題,我們就一起來看看 AND
、OR
、NOT
函式是什麼,還有怎麼用它們來做多條件判斷吧。我會再接著寫一篇,準備幾個練習題給大家參考!
註:在這篇教學提到的 AND
、OR
、NOT
,是指 Google 試算表的函式,不是邏輯運算子。至於這個邏輯運算子是什麼、在哪用、要怎麼用,我會另外在別的篇幅解釋。
在切入今天的正題之前,我想提一個很簡單的概念,叫做「布林值」(Boolean)。
布林值是一種資料的類型,只會有兩種型態,TRUE
跟 FALSE
。
通常我們會用 TRUE
來表達「是、對、真、正確、符合條件」,用 FALSE
來表達「否、錯、假、不正確、不符合條件」。
我們先回到剛剛買飯糰的例子。記得我們這裡有兩個條件嗎?其中一個是:
條件 A:錢包裡的錢是否大於 100 塊
那麽:
TRUE
FALSE
條件 B:飯糰類有無買一送一的活動
那麽:
TRUE
FALSE
所以結論來看,在我們剛剛的故事裡,因為兩個條件都有符合,所以我們得到了 TRUE
跟 TRUE
。
好,到這邊我們已經準備足夠的知識來了解 AND
、OR
、NOT
函式了,進入正題!
這三個函式的結果都會回傳一個布林值,也就是 TRUE
或 FALSE
。
我們通常會把 AND
、OR
、NOT
跟 IF
或 IFS
這類有條件判斷的函式搭配使用,像是這樣:
=IF(AND(...), TRUE 的狀況, FALSE 的狀況)
所以:
TRUE
,IF
就會做 TRUE
的狀況FALSE
,IF
就會做 FALSE
的狀況AND
、OR
、NOT
函式也常常跟條件式格式、資料驗證的自訂格式一起搭配,達到多條件判斷的效果。如果你需要複習上面的這些函式,我這邊也準備好給你囉:
就這麼簡單!接下來一一講解每個函式。
=AND(條件一, [條件二], [條件三]...)
這邊的「條件」要寫可以回傳布林值的條件,常見的有:
A1 >= 50
、A2 < 120
)A1 = "喜特先生"
、A2 <> 100
)ISNUMBER
、ISTEXT
、ISNULL
等(ISNUMBER(A1)
、ISTEXT(A2)
)除了條件一是必填以外,條件二之後的條件都是選填,記得要把條件跟條件用逗號隔開。
那既然剛剛提到 AND
函式會回傳布林值,那它在什麼時候回傳 TRUE
、什麼時候會回傳 FALSE
呢?答案是:
當AND
裡的全部條件都是TRUE
時,
才會回傳TRUE
,
否則就回傳FALSE
舉我們剛剛買飯糰的例子。當錢包裡的錢是否大於 100 塊、且飯糰類有買一送一的活動,那麼就會買飯糰,不然就不買。
翻譯成 IF
的算式就可以寫成這樣:
=IF(AND(錢包的錢 > 100, 飯糰類有買一送一的活動), "買飯糰", "不買飯糰")
我在便利商店的時候,發現錢包的錢的確有超過 100、且飯糰類也有買一送一的活動,也就是 AND
裡面的條件全部都是 TRUE
:
=IF(AND(TRUE, TRUE), "買飯糰", "不買飯糰")
那麽 AND
就會給你 TRUE
了:
=IF(TRUE, "買飯糰", "不買飯糰")
所以你就會得到「買飯糰」。
那假如我身上的錢沒有帶夠,只有 50 塊,不符合第一個條件,那就會變這樣:
=IF(AND(FALSE, TRUE), "買飯糰", "不買飯糰")
AND
裡面的條件並沒有全部都是 TRUE
,所以 AND
會給你 FALSE
,也就會從 IF
得到「不買飯糰」了。
=IF(FALSE, "買飯糰", "不買飯糰")
--> "不買飯糰"
=OR(條件一, [條件二], [條件三]...)
OR
函式的寫法跟剛剛 AND
函式一樣,「條件」要寫可以回傳布林值的條件,然後條件一必填以外,條件二之後的條件都是選填。
那麼剛剛的 AND
是「當所有條件都滿足時,才會回傳 TRUE
,否則回傳 FALSE
」,那 OR
呢?
當OR
裡的任一條件是TRUE
時,
就會回傳TRUE
,
否則回傳FALSE
好,我們改寫一下剛剛的買飯糰故事,改成:
「只要錢包的錢大於 100 塊、或是飯糰類有買一送一的活動,那就買飯糰」。
當然,如果兩個條件都有達成,那也會買飯糰。
要用函式來表達這樣的狀況,就可以把 OR
派上用場,就可以寫成這樣囉:
=IF(OR(錢包的錢 > 100, 飯糰類有買一送一的活動), "買飯糰", "不買飯糰")
那假設這時我又出現在便利商店,發現錢包的錢雖然超過 100 塊,但飯糰類沒有買一送一的活動,也就是有一個 TRUE
跟一個 FALSE
:
=IF(OR(TRUE, FALSE), "買飯糰", "不買飯糰")
那這時 OR
也會給你 TRUE
,因為只要有一個條件滿足,OR
就會給 TRUE
:
=IF(TRUE, "買飯糰", "不買飯糰")
所以你還是會得到「買飯糰」。
那假如我身上的錢沒有帶夠、便利商店又沒提供買一送一的活動,那就會變這樣:
=IF(OR(FALSE, FALSE), "買飯糰", "不買飯糰")
因為 OR
裡面的條件完全沒有 TRUE
,所以 OR
會給你 FALSE
,也就會從 IF
得到「不買飯糰」了。
=IF(FALSE, "買飯糰", "不買飯糰")
--> "不買飯糰"
=NOT(條件)
最後,是 NOT
函式。它的寫法跟剛剛的 AND
、OR
不一樣,不過 NOT
很好理解,就只是把條件產生出的布林值反轉而已。一句話來概括:
TRUE
變FALSE
、FALSE
變TRUE
示範幾個寫法:
=NOT(TRUE) --> FALSE
=NOT(FALSE) --> TRUE
=NOT(AND(TRUE, TRUE)) --> FALSE
=NOT(OR(TRUE, FALSE)) --> FALSE
=NOT(AND(TRUE, FALSE)) --> TRUE
=NOT(OR(FALSE, FALSE)) --> TRUE
大家辛苦了!到這邊統整一下,AND
、OR
、NOT
的不同:
AND
:只有全部條件為 TRUE
,那結果才會是 TRUE
OR
:只要任一條件為 TRUE
,那結果就會是 TRUE
NOT
:把布林值反轉,TRUE
變 FALSE
、FALSE
變 TRUE
下一篇會給大家實際演練,帶大家體驗看看 AND
、OR
、NOT
能達到的多條件判斷唷!請看這邊:
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!