今天整理邏輯值的四個函式:TRUE、FALSE、NOT 跟 XOR。AND、OR、IF 另外在 IF 函式入門 跟 巢狀 IF 與 AND、OR 講過,這篇不重複。
我個人幾乎不會寫 TRUE(),直接打 TRUE 就好;NOT 偶爾搭配判斷函式用;XOR 是這四個裡面最容易誤會的,因為多個引數時它看的是 TRUE 的個數為奇數,跟「剛好一個」有落差。這篇當工具書,需要時回來查。
怎麼選
| 想做的事 | 用哪個 | 備註 |
|---|---|---|
| 產生一個 TRUE 或 FALSE | TRUE、FALSE | 一般直接打 TRUE、FALSE 就好 |
| 把 TRUE 變 FALSE、FALSE 變 TRUE | NOT | 常接在 ISxxx 判斷函式前面 |
| 兩個條件剛好一個成立 | XOR | 兩個引數時最好懂 |
| 剛好一個成立(三個以上) | COUNTIF(範圍, TRUE)=1 | XOR 看的是奇數個,不是剛好一個 |
邏輯值
TRUE
傳回邏輯值 TRUE。
語法:
用函式產生 TRUE
=TRUE()會得到 TRUE。直接在儲存格或公式裡打 TRUE(不加引號、不加括號)效果一樣,比方 的最後一個參數。函式的寫法是為了跟其他試算表軟體的語法相容,Sheets 裡我沒遇過非用不可的場合。
要注意別加引號,"TRUE" 加了引號就是文字,不是邏輯值。
FALSE
傳回邏輯值 FALSE,用法跟 TRUE 對稱。
語法:
用函式產生 FALSE
=FALSE()會得到 FALSE。VLOOKUP 要精確比對時,第四個參數寫 FALSE,就是這個值。
TRUE 和 FALSE 拿來算數
邏輯值可以直接參與運算,TRUE 當 1,FALSE 當 0。A2、A3、A4 依序放 TRUE、TRUE、FALSE:
邏輯值當數字相加
=A2+A3+A4結果是 2。但 SUM 就不一樣了:
SUM 加總含邏輯值的範圍
=SUM(A2:A4)會得到 0,因為範圍裡的 TRUE 跟 FALSE 會被 SUM 忽略。要把 TRUE 當 1 算個數,用 COUNTIF 比較直接:
數出 TRUE 有幾個
=COUNTIF(A2:A4, TRUE)會得到 2。核取方塊勾起來是 TRUE、沒勾是 FALSE,所以數核取方塊勾了幾個就是這個寫法。
反轉與互斥
NOT
傳回相反的邏輯值,TRUE 變 FALSE,FALSE 變 TRUE。
語法:
- 邏輯運算式:結果是 TRUE 或 FALSE 的東西,比較式、
ISBLANK、核取方塊都可以。
B2 不是空白就是 TRUE
=NOT(ISBLANK(B2))B2 有內容時,ISBLANK(B2) 是 FALSE,反過來就是 TRUE。簡單的比較用運算子比 NOT 短, 其實就是 , 就是 。
我會用 NOT 的場合是前面接的是一個判斷函式,沒有現成的反義運算子。例如 ISEMAIL 判斷格式對不對,要挑出格式不對的列:
B2 的 Email 格式不對
=NOT(ISEMAIL(B2))另一個是整串條件取反, 是「兩科沒有同時及格」。
數字也能丟進去:0 當 FALSE,其他數字當 TRUE,所以 是 TRUE。文字(例如 )會得到 #VALUE!。
XOR
傳回「互斥或」:引數裡 TRUE 的個數是奇數就是 TRUE,偶數就是 FALSE。
語法:
兩個引數時,意思是「剛好一個成立」,這也是最常見的用法。假設手搖飲的折扣有「會員價」「團購價」兩欄,只能擇一:
會員價與團購價只能選一個
=XOR(B2, C2)四種組合各自的結果是:
B2 會員價 | C2 團購價 | |
|---|---|---|
| TRUE | FALSE | TRUE |
| FALSE | TRUE | TRUE |
| TRUE | TRUE | FALSE |
| FALSE | FALSE | FALSE |
兩個都選或都沒選,結果是 FALSE。
麻煩的是引數變三個以上。XOR 看的是 TRUE 的個數是不是奇數,所以三個全是 TRUE,也就是 3 個,結果會是 TRUE:
三個引數都是 TRUE
=XOR(TRUE, TRUE, TRUE)會得到 TRUE。引數也可以直接給一個範圍, 就是看那一列有幾個 TRUE。
所以「剛好選一個」的欄位超過兩個時,我不用 XOR,後面的實例會比較。
引數給數字時,0 當 FALSE、其他數字當 TRUE,例如 是 TRUE。
實例:折扣欄位檢查
訂單表有三種折扣,B 欄會員價、C 欄團購價、D 欄學生價,用核取方塊勾選,一筆訂單只能套一種。我想在 E 欄標出有問題的列。
資料與兩種寫法的結果對照:
| 列 | B、C、D 欄 | ||
|---|---|---|---|
| 2 | TRUE、FALSE、FALSE | TRUE | TRUE |
| 3 | TRUE、TRUE、FALSE | FALSE | FALSE |
| 4 | FALSE、FALSE、FALSE | FALSE | FALSE |
| 5 | TRUE、TRUE、TRUE | TRUE | FALSE |
前三列兩種寫法一樣,只有第 5 列不同,三個折扣全勾了,XOR 因為 TRUE 有 3 個(奇數)判成 TRUE,放過去了。COUNTIF 直接問「TRUE 剛好 1 個嗎」,第 5 列才會被抓出來。
所以我把 E 欄寫成:
折扣剛好選了一種才顯示 OK
=IF(COUNTIF(B2:D2, TRUE)=1, "OK", "檢查")第 2 列是 OK,第 3、4、5 列是「檢查」。兩個選項時 XOR 一樣好用;三個以上,用 COUNTIF。
回到自己的表,找一欄兩種互斥的選項,用 XOR 試試看吧!
接下來可以
相關文章
查看所有文章IF 函式入門:TRUE / FALSE 與比較運算子
從 TRUE 和 FALSE 開始,認識 =、>、<、>=、<=、<> 六個比較運算子,再用 IF 讓儲存格依條件顯示不同的結果,最後預告巢狀 IF 的一層寫法。
巢狀 IF 與 AND / OR 的陷阱:順序、ARRAYFORMULA 與空白儲存格
整理巢狀 IF 和 AND / OR 常踩的坑:條件順序與邊界值寫反、AND / OR 放進 ARRAYFORMULA 不會逐列判斷、文字和數字比較、空白儲存格被當成 0,並簡單比較 IFS 與 SWITCH。
CONVERT 單位換算:公里、磅、攝氏、小時一次搞定
用 CONVERT 在公式裡換算長度、重量、溫度、時間和容量,附常用單位代碼表、整欄套用的寫法,以及單位類別不同時的錯誤。
留言討論
共 0 則留言
