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 塊
那麽:
- 錢包裡的錢如果大於 100 塊,那麼就是「符合條件」,即是
TRUE - 錢包裡的錢如果不大於 100 塊,那麼就是「不符合條件」,即是
FALSE
條件 B:飯糰類有無買一送一的活動
那麽:
- 飯糰類有買一送一的活動,那麼就是「符合條件」,即是
TRUE - 飯糰類無買一送一的活動,那麼就是「不符合條件」,即是
FALSE
所以結論來看,在我們剛剛的故事裡,因為兩個條件都有符合,所以我們得到了 TRUE 跟 TRUE。
好,到這邊我們已經準備足夠的知識來了解 AND、OR、NOT 函式了,進入正題!
AND、OR、NOT 函式
這三個函式的結果都會回傳一個布林值,也就是 TRUE 或 FALSE。
我們通常會把 AND、OR、NOT 跟 IF 或 IFS 這類有條件判斷的函式搭配使用,像是這樣:
=IF(AND(...), TRUE 的狀況, FALSE 的狀況)
所以:
- 如果這行算式的結果是
TRUE,IF就會做TRUE的狀況 - 如果這行算式的結果是
FALSE,IF就會做FALSE的狀況
AND、OR、NOT 函式也常常跟條件式格式、資料驗證的自訂格式一起搭配,達到多條件判斷的效果。如果你需要複習上面的這些函式,我這邊也準備好給你囉:
就這麼簡單!接下來一一講解每個函式。
AND 函式:全部 TRUE 才是 TRUE
=AND(條件一, [條件二], [條件三]...)
這邊的「條件」要寫可以回傳布林值的條件,常見的有:
- 比較運算式:大於、小於(
A1 >= 50、A2 < 120) - 等於不等於:等於、不等於(
A1 = "喜特先生"、A2 <> 100) - IS 類的函式:
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 函式:一個 TRUE 就是 TRUE
=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(條件)
最後,是 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,那結果才會是TRUEOR:只要任一條件為TRUE,那結果就會是TRUENOT:把布林值反轉,TRUE變FALSE、FALSE變TRUE
下一篇會給大家實際演練,帶大家體驗看看 AND、OR、NOT 能達到的多條件判斷唷!請看這邊:
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!




















