2023-10-02|閱讀時間 ‧ 約 29 分鐘

AND、OR、NOT(一):多條件判斷

ANDORNOT 在試算表函式裡是很方便的函式。我們常用它們來做多條件判斷,搭配 IFIFS 或常用條件式格式、資料驗證這些功能,來完成比較複雜的邏輯判斷需求。

不過其實這樣的「多條件判斷」或許已經在你我的生活裡常常發生。讓我舉個情境給你聽聽!




假設我在某天上班的途中,剛好經過一間便利商店,打算買早餐來吃。我踏入便利商店後,心想:

「如果我錢包裡有 100 塊以上,且飯糰類有買一送一的活動的話,
那我就要買飯糰。」

「好欸,錢包裡還有 300 塊!」我檢查了一下自己的錢包。

再來我走到鮮食區,抬頭一看,發現今天正好有飯糰類買一送一的活動。

最後我就買了飯糰,走出便利商店,繼續趕路了。




你發現了嗎?在這則短短的故事裡,其實就有一個多條件判斷了。回顧一下:

條件 A:錢包裡的錢是否大於 100 塊
條件 B:飯糰類有無買一送一的活動
→ 如果兩個條件都成立的話,就會買飯糰

這裡的「條件 A」跟「條件 B」就是多條件,而「如果兩個條件都成立就做什麼事」就是判斷了。

如果到這邊都沒問題,我們就一起來看看 ANDORNOT 函式是什麼,還有怎麼用它們來做多條件判斷吧。我會再接著寫一篇,準備幾個練習題給大家參考!

註:在這篇教學提到的 ANDORNOT ,是指 Google 試算表的函式,不是邏輯運算子。至於這個邏輯運算子是什麼、在哪用、要怎麼用,我會另外在別的篇幅解釋。




先認識「布林值」

在切入今天的正題之前,我想提一個很簡單的概念,叫做「布林值」(Boolean)。

布林值是一種資料的類型,只會有兩種型態,TRUEFALSE

通常我們會用 TRUE 來表達「是、對、真、正確、符合條件」,用 FALSE 來表達「否、錯、假、不正確、不符合條件」。

我們先回到剛剛買飯糰的例子。記得我們這裡有兩個條件嗎?其中一個是:

條件 A:錢包裡的錢是否大於 100 塊

那麽:

  • 錢包裡的錢如果大於 100 塊,那麼就是「符合條件」,即是 TRUE
  • 錢包裡的錢如果不大於 100 塊,那麼就是「不符合條件」,即是 FALSE
條件 B:飯糰類有無買一送一的活動

那麽:

  • 飯糰類有買一送一的活動,那麼就是「符合條件」,即是 TRUE
  • 飯糰類無買一送一的活動,那麼就是「不符合條件」,即是 FALSE

所以結論來看,在我們剛剛的故事裡,因為兩個條件都有符合,所以我們得到了 TRUETRUE

好,到這邊我們已經準備足夠的知識來了解 ANDORNOT 函式了,進入正題!




AND、OR、NOT 函式

這三個函式的結果都會回傳一個布林值,也就是 TRUEFALSE

我們通常會把 ANDORNOTIFIFS 這類有條件判斷的函式搭配使用,像是這樣:

=IF(AND(...), TRUE 的狀況, FALSE 的狀況)

所以:

  • 如果這行算式的結果是 TRUEIF 就會做 TRUE 的狀況
  • 如果這行算式的結果是 FALSEIF 就會做 FALSE 的狀況

ANDORNOT 函式也常常跟條件式格式、資料驗證的自訂格式一起搭配,達到多條件判斷的效果。如果你需要複習上面的這些函式,我這邊也準備好給你囉:

IF,如果 … 那就 … 不然 …

IFS,IF 只要加個 S...?

條件式格式(二):自訂公式

資料驗證(三):自訂公式

就這麼簡單!接下來一一講解每個函式。




AND 函式:全部 TRUE 才是 TRUE

=AND(條件一, [條件二], [條件三]...)

這邊的「條件」要寫可以回傳布林值的條件,常見的有:

  • 比較運算式:大於、小於(A1 >= 50A2 < 120
  • 等於不等於:等於、不等於(A1 = "喜特先生"A2 <> 100
  • IS 類的函式:ISNUMBERISTEXTISNULL 等(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 函式。它的寫法跟剛剛的 ANDOR 不一樣,不過 NOT 很好理解,就只是把條件產生出的布林值反轉而已。一句話來概括:

TRUEFALSEFALSETRUE

示範幾個寫法:

=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




大家辛苦了!到這邊統整一下,ANDORNOT 的不同:

  • AND:只有全部條件為 TRUE,那結果才會是 TRUE
  • OR:只要任一條件為 TRUE,那結果就會是 TRUE
  • NOT:把布林值反轉,TRUEFALSEFALSETRUE

下一篇會給大家實際演練,帶大家體驗看看 ANDORNOT 能達到的多條件判斷唷!請看這邊:



如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.