AND、OR、NOT(二):實際應用

更新於 2024/10/15閱讀時間約 9 分鐘

接續著上次的 AND、OR、NOT(一):多條件判斷,我今天想要實際舉個簡單的例子,帶大家了解怎麼實際使用這些函式。在這之前,我們小小複習一下它們是什麼:

ANDOR 的函式語法是一樣的:

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

把要判斷的條件放在括號裡面,並用逗號隔開。而 AND 跟 OR 的差異在於:

  • AND:只有全部條件為 TRUE,那結果才會是 TRUE
  • OR:只要任一條件為 TRUE,那結果就會是 TRUE

再來就是 NOT,語法也很單純,只要把會 TRUEFALSE 或會產生布林值的函式放在括號裡面即可:

=NOT(條件)

NOT的作用則是把布林值反轉,TRUE 變 FALSEFALSE 變 TRUE

好,我們開始囉!




AND、OR

歡迎先到這邊複製練習用的試算表,一起練習!

你是在烏石港經營某背包客棧的老闆,你打算用你們客棧現有的會員卡制度,推出一波行銷活動,吸引有卡的客人再回來你這住。

你想訂的規則是:

  • 有「衝浪之友」會員卡的客人,消費金額打 9 折
  • 有「海洋之友」會員卡的客人,消費金額打 9 折
  • 有兩張卡的客人,住宿金額打 8 折
  • 兩張卡都沒有,原價

你收到這樣的訂單資訊,要來結算每個客人折扣後的金額:

raw-image

怎麼做呢?我們先檢視並統整一下:

  1. 有「衝浪之友」會員卡有「海洋之友」會員卡的客人,消費金額打 9
  2. 有「衝浪之友」會員卡有「海洋之友」會員卡的客人,消費金額打 8
  3. 兩張卡都沒有,也就是不符合以上條件的話,消費金額就是原價

第一個條件就是 AND 很好的應用方式:

AND(衝浪之友 =, 海洋之友 =)

第二個條件就是 OR 了:

OR(衝浪之友 =, 海洋之友 =)

再來可以用 IFS(多條件判斷),條列上面的兩個條件,並加上價格計算:

IFS(
AND(衝浪之友​ =, 海洋之友​ =), 原價 * 0.8,
OR(衝浪之友​ =, 海洋之友​ =), 原價 * 0.9)

最後,考量到這兩個條件如果都沒有符合,就會是第三個條件了。

因為 IFS 在沒達成條件時,會出現 #N/A 的錯誤,這時候就在外面再包一層 IFNA,處理這樣的狀況即可。(延伸閱讀: 處理錯誤的 IFNA 跟 IFERROR

IFNA(..., 原價)

所以結合起來就是:

=IFNA(
IFS(
AND(衝浪之友​ =, 海洋之友​ =), 原價 * 0.8,
OR(衝浪之友​ =, 海洋之友​ =), 原價 * 0.9),
原價)


那我們回到表格,把相對應的儲存格位址填入就好了。我們在 E2 寫上:

=IFNA(
IFS(
AND(C2 = "有", D2 = "有"), B2 * 0.8,
OR(C2 = "有", D2 = "有"), B2 * 0.9),
B2)
raw-image

按下 Enter 看看:

raw-image

以許先生的狀況來看,他的消費金額是 2500 元,有衝浪之友的會員卡、沒有海洋之友的會員卡,所以是打 9 折。那麽,他最後折扣後的金額就是:

2500 * 0.9 = 2250

看來試算表有把這個算式處理好了。我們再把它往下複製到最後一列:

raw-image

這樣就做完了!保險起見,來驗證幾筆資料,看看金額有沒有錯誤:

  • 第三列的張小姐
    消費金額 1300 元,兩張會員卡都沒有,所以是原價,1300 元,正確!
  • 第九列的陳先生
    消費金額 2700 元,兩張會員卡都有,所以打八折(2700 * 0,8),折扣後金額是 2160 元,正確!




NOT

說實在,我個人不常用 NOT,因為通常我在寫條件判斷的時候,通常是用正面的角度想,也就是:

「如果 A 發生了就是 A 狀況、如果B發生了就是 B 狀況」

而很少以反面的角度想,像是:

「如果 A 沒發生就是 A 狀況、如果 B 沒發生了就是 B 狀況」

而我會用到 NOT 的少數狀況之一,大概是「想把一大串條件反轉」的時候。舉例來說,我在今年 7 月寫了一篇 條件式格式(二):自訂公式 的教學,在文章的最後,我試著用 Google 試算表來判斷身份證字號是否正確,寫了這串東西:

=AND(
IF(LEN(A1) = 10, TRUE, FALSE),
REGEXMATCH(LEFT(A1, 1), "[A-Z]"),
IFERROR(OR(VALUE(MID(A1, 2, 1)) = 1,
VALUE(MID(A1, 2, 1)) = 2,
VALUE(MID(A1, 2, 1)) = 8,
VALUE(MID(A1, 2, 1)) = 9), FALSE),
IFERROR(IF(MOD(SUM(
SWITCH(LEFT(A1, 1),
"A", 1, "B", 10, "C", 19, "D", 28, "E", 37, "F", 46, "G", 55,
"H", 64, "I", 39, "J", 73, "K", 82, "L", 2, "M", 11, "N", 20,
"O", 48, "P", 29, "Q", 38, "R", 47, "S", 56, "T", 65, "U", 74,
"V", 83, "W", 21, "X", 3, "Y", 12, "Z", 30),
VALUE(MID(A1, 2, 1)) * 8, VALUE(MID(A1, 3, 1)) * 7,
VALUE(MID(A1, 4, 1)) * 6, VALUE(MID(A1, 5, 1)) * 5,
VALUE(MID(A1, 6, 1)) * 4, VALUE(MID(A1, 7, 1)) * 3,
VALUE(MID(A1, 8, 1)) * 2, VALUE(MID(A1, 9, 1)) * 1,
VALUE(MID(A1, 10, 1)) * 1), 10) = 0, TRUE, FALSE), FALSE)
)

簡單來說,上面這串就是以 AND 判斷身份證字號是否正確的四個條件,簡化如下:

=AND(
條件一,
條件二,
條件三,
條件四
)

如果各個條件都有符合,那麼最終結果是 TRUE,身份證字號就是正確的了。當時的狀況是如果自訂公式是 TRUE,那麼就會套用條件式格式(讓儲存格變綠、字體變粗等等)。

可是,如果我要做的是「如果身份證驗證沒通過,也就是四個條件其中有一個不符合條件,則顯示條件式格式」呢?

我們先回想一下剛剛的 AND

=AND(條件一, 條件二, 條件三, 條件四)

假設全部條件都是 TRUE,只有條件一是 FALSE,那 AND 也會回傳 FALSE

=AND(FALSE, TRUE, TRUE, TRUE)
=AND(FALSE)

因為 AND 的結果是 FALSE,這樣反而就不會出現條件式格式了。

那,只要我把這個邏輯反轉過來,給個 NOT 看看呢?像是這樣:

=NOT(AND(條件一, 條件二, 條件三, 條件四))

舉例來說,如果符合身份證字號的驗證條件都有符合:

=NOT(AND(TRUE, TRUE, TRUE, TRUE)
=NOT(AND(TRUE))
=NOT(TRUE)
=FALSE

最後就是 FALSE,那麼條件式格式不會啟動。

那如果驗證條件有一個不符合(數個不符甚至全部不符也是):

=NOT(AND(TRUE, TRUE, TRUE, FALSE)
=NOT(AND(FALSE))
=NOT(FALSE)
=TRUE

結果顯示 TRUE,條件式格式就會啟動了!這就是我其中一個 NOT 的應用例子。




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

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

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

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



avatar-img
14.1K會員
148內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
怎麼用排序功能與 RANK 函式做出奪牌的排名?在這邊我分享一些我的見解,歡迎來看看!
AND、OR、NOT 在試算表函式裡是很方便的函式。我們常用它們來做多條件判斷,搭配 IF、IFS 或常用條件式格式、資料驗證這些功能,來完成比較複雜的邏輯判斷需求。一起來看看!
這是你一定要學的條件式格式的關鍵用法!快點進來看看~
兩層式下拉式選單怎麼做?或許比你想像中來得簡單唷!一起來看看~
把文字分隔成不同欄還有第二招!歡迎來看看~
怎麼用排序功能與 RANK 函式做出奪牌的排名?在這邊我分享一些我的見解,歡迎來看看!
AND、OR、NOT 在試算表函式裡是很方便的函式。我們常用它們來做多條件判斷,搭配 IF、IFS 或常用條件式格式、資料驗證這些功能,來完成比較複雜的邏輯判斷需求。一起來看看!
這是你一定要學的條件式格式的關鍵用法!快點進來看看~
兩層式下拉式選單怎麼做?或許比你想像中來得簡單唷!一起來看看~
把文字分隔成不同欄還有第二招!歡迎來看看~
本篇參與的主題活動
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在程式語言裡,對應到多重選擇路徑判斷的語法, 最通俗也最常見的就是if ... else ... 語法。 今天,我們將從最基本的 若A條件成立 則...否則 ... 的 if ... else ...開始講起, 搭配幾個範例做說明,最後以一個經典的閏年判定最為結尾的Demo
Thumbnail
bool(boolean)布林值: 布林值在程式設計和演算法中扮演著至關重要的角色。它主要用於決策過程中,幫助程序根據不同的條件做出不同的處理。 在布林值中只有兩種可能的值,True(為真) 跟 False(為假),用來判斷結果。 布林值中我們使用 if 的條件語句,在我們設置一些條件的時候,
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
※ 條件判斷語法 決策中需要處理分歧的狀況,就會用到「if」、「else if」、「else」。 ※ 語法結構: 條件式使用小括號(),裡面放判斷式。 要執行的程式碼放在大括號{}裡。 條件式只會有 true 或 false 兩種結果。 ※ 常用的比較運算子: > 大於 < 小於
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
🎗️布林邏輯 布林邏輯在EXCEL中扮演一個超級重要的角色,其實是兩個角色才對,一個叫做TRUE、一個叫做FALSE。 那TRUE跟FALSE代表什麼意思,又有什麼意義呢? TRUE英文翻譯是真,在布林邏輯上則是成立的意思 FALSE英文翻譯為假,在布林邏輯上則是不成立的意思 TRUE
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在程式語言裡,對應到多重選擇路徑判斷的語法, 最通俗也最常見的就是if ... else ... 語法。 今天,我們將從最基本的 若A條件成立 則...否則 ... 的 if ... else ...開始講起, 搭配幾個範例做說明,最後以一個經典的閏年判定最為結尾的Demo
Thumbnail
bool(boolean)布林值: 布林值在程式設計和演算法中扮演著至關重要的角色。它主要用於決策過程中,幫助程序根據不同的條件做出不同的處理。 在布林值中只有兩種可能的值,True(為真) 跟 False(為假),用來判斷結果。 布林值中我們使用 if 的條件語句,在我們設置一些條件的時候,
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
※ 條件判斷語法 決策中需要處理分歧的狀況,就會用到「if」、「else if」、「else」。 ※ 語法結構: 條件式使用小括號(),裡面放判斷式。 要執行的程式碼放在大括號{}裡。 條件式只會有 true 或 false 兩種結果。 ※ 常用的比較運算子: > 大於 < 小於
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
🎗️布林邏輯 布林邏輯在EXCEL中扮演一個超級重要的角色,其實是兩個角色才對,一個叫做TRUE、一個叫做FALSE。 那TRUE跟FALSE代表什麼意思,又有什麼意義呢? TRUE英文翻譯是真,在布林邏輯上則是成立的意思 FALSE英文翻譯為假,在布林邏輯上則是不成立的意思 TRUE
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。