跳到主要內容跳到頁尾

TRUE、FALSE、NOT 與 XOR:邏輯值函式整理

4 分鐘閱讀Lv.2 中級摘要與日期

整理 TRUE、FALSE、NOT、XOR 四個邏輯值函式:什麼時候要寫成 TRUE() 的形式、TRUE 和 FALSE 在運算與加總時的行為、NOT 反轉判斷,以及 XOR 多個引數時是看 TRUE 的個數為奇數。最後用折扣欄位檢查當實例。

發布

文章目錄

今天整理邏輯值的四個函式:TRUE、FALSE、NOT 跟 XOR。AND、OR、IF 另外在 IF 函式入門 跟 巢狀 IF 與 AND、OR 講過,這篇不重複。

我個人幾乎不會寫 TRUE(),直接打 TRUE 就好;NOT 偶爾搭配判斷函式用;XOR 是這四個裡面最容易誤會的,因為多個引數時它看的是 TRUE 的個數為奇數,跟「剛好一個」有落差。這篇當工具書,需要時回來查。

怎麼選

想做的事用哪個備註
產生一個 TRUE 或 FALSETRUE、FALSE一般直接打 TRUE、FALSE 就好
把 TRUE 變 FALSE、FALSE 變 TRUENOT常接在 ISxxx 判斷函式前面
兩個條件剛好一個成立XOR兩個引數時最好懂
剛好一個成立(三個以上)COUNTIF(範圍, TRUE)=1XOR 看的是奇數個,不是剛好一個

邏輯值

TRUE

傳回邏輯值 TRUE。

語法:

Google 試算表公式
fx

用函式產生 TRUE

=TRUE()

會得到 TRUE。直接在儲存格或公式裡打 TRUE(不加引號、不加括號)效果一樣,比方 的最後一個參數。函式的寫法是為了跟其他試算表軟體的語法相容,Sheets 裡我沒遇過非用不可的場合。

要注意別加引號,"TRUE" 加了引號就是文字,不是邏輯值。

FALSE

傳回邏輯值 FALSE,用法跟 TRUE 對稱。

語法:

Google 試算表公式
fx

用函式產生 FALSE

=FALSE()

會得到 FALSE。VLOOKUP 要精確比對時,第四個參數寫 FALSE,就是這個值。

TRUE 和 FALSE 拿來算數

邏輯值可以直接參與運算,TRUE 當 1,FALSE 當 0。A2、A3、A4 依序放 TRUE、TRUE、FALSE:

Google 試算表公式
fx

邏輯值當數字相加

=A2+A3+A4

結果是 2。但 SUM 就不一樣了:

Google 試算表公式
fx

SUM 加總含邏輯值的範圍

=SUM(A2:A4)

會得到 0,因為範圍裡的 TRUE 跟 FALSE 會被 SUM 忽略。要把 TRUE 當 1 算個數,用 COUNTIF 比較直接:

Google 試算表公式
fx

數出 TRUE 有幾個

=COUNTIF(A2:A4, TRUE)

會得到 2。核取方塊勾起來是 TRUE、沒勾是 FALSE,所以數核取方塊勾了幾個就是這個寫法。

反轉與互斥

NOT

傳回相反的邏輯值,TRUE 變 FALSE,FALSE 變 TRUE。

語法:

  • 邏輯運算式:結果是 TRUE 或 FALSE 的東西,比較式、ISBLANK、核取方塊都可以。
Google 試算表公式
fx

B2 不是空白就是 TRUE

=NOT(ISBLANK(B2))

B2 有內容時,ISBLANK(B2) 是 FALSE,反過來就是 TRUE。簡單的比較用運算子比 NOT 短, 其實就是 , 就是 。

我會用 NOT 的場合是前面接的是一個判斷函式,沒有現成的反義運算子。例如 ISEMAIL 判斷格式對不對,要挑出格式不對的列:

Google 試算表公式
fx

B2 的 Email 格式不對

=NOT(ISEMAIL(B2))

另一個是整串條件取反, 是「兩科沒有同時及格」。

數字也能丟進去:0 當 FALSE,其他數字當 TRUE,所以 是 TRUE。文字(例如 )會得到 #VALUE!。

XOR

傳回「互斥或」:引數裡 TRUE 的個數是奇數就是 TRUE,偶數就是 FALSE。

語法:

兩個引數時,意思是「剛好一個成立」,這也是最常見的用法。假設手搖飲的折扣有「會員價」「團購價」兩欄,只能擇一:

Google 試算表公式
fx

會員價與團購價只能選一個

=XOR(B2, C2)

四種組合各自的結果是:

B2 會員價C2 團購價
TRUEFALSETRUE
FALSETRUETRUE
TRUETRUEFALSE
FALSEFALSEFALSE

兩個都選或都沒選,結果是 FALSE。

麻煩的是引數變三個以上。XOR 看的是 TRUE 的個數是不是奇數,所以三個全是 TRUE,也就是 3 個,結果會是 TRUE:

Google 試算表公式
fx

三個引數都是 TRUE

=XOR(TRUE, TRUE, TRUE)

會得到 TRUE。引數也可以直接給一個範圍, 就是看那一列有幾個 TRUE。

所以「剛好選一個」的欄位超過兩個時,我不用 XOR,後面的實例會比較。

引數給數字時,0 當 FALSE、其他數字當 TRUE,例如 是 TRUE。

實例:折扣欄位檢查

訂單表有三種折扣,B 欄會員價、C 欄團購價、D 欄學生價,用核取方塊勾選,一筆訂單只能套一種。我想在 E 欄標出有問題的列。

資料與兩種寫法的結果對照:

列B、C、D 欄
2TRUE、FALSE、FALSETRUETRUE
3TRUE、TRUE、FALSEFALSEFALSE
4FALSE、FALSE、FALSEFALSEFALSE
5TRUE、TRUE、TRUETRUEFALSE

前三列兩種寫法一樣,只有第 5 列不同,三個折扣全勾了,XOR 因為 TRUE 有 3 個(奇數)判成 TRUE,放過去了。COUNTIF 直接問「TRUE 剛好 1 個嗎」,第 5 列才會被抓出來。

所以我把 E 欄寫成:

Google 試算表公式
fx

折扣剛好選了一種才顯示 OK

=IF(COUNTIF(B2:D2, TRUE)=1, "OK", "檢查")

第 2 列是 OK,第 3、4、5 列是「檢查」。兩個選項時 XOR 一樣好用;三個以上,用 COUNTIF。

回到自己的表,找一欄兩種互斥的選項,用 XOR 試試看吧!

分享:
#邏輯值#TRUE#FALSE#NOT#XOR
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。