跳到主要內容跳到頁尾

條件式格式自訂公式沒反應?$ 放錯、跨表參照與日期比較的陷阱

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

整理條件式格式自訂公式最常踩的坑:公式以套用範圍左上角為基準、$ 該鎖欄還是鎖列、整列標色、跨工作表要用 INDIRECT、公式回傳錯誤時規則不會套用,以及日期時間與文字日期讓比較失準。

發布 更新

文章目錄

為什麼我的條件式格式明明寫了自訂公式,顏色卻整排差一列、或是整欄都變色?多半是 $ 放錯位置,或是公式回傳了錯誤值,規則默默不套用。

怎麼新增規則、單色條件有哪些,在 條件式格式設定 講過;到期提醒與狀態看板的做法在 條件式格式實戰。這篇專門收會出錯的地方。每一節我都用輔助欄把規則的公式寫進儲存格,TRUE 就是會被標色,這樣不用靠眼睛猜。

先用兩個小規則,分清公式與格式

延伸閱讀:方格子上的自訂公式舊文。先另開一張空白表,把下方資料貼到 A1,最後一列 A5:B5 留空:

奇數與字數練習,貼到 A1
數值	文字	奇數規則值	字數規則值
5	ABCDE
8	ABCDEF
文字	你好

在 C2 放第一條,再往下填到 C5:

Google 試算表公式
fx

先看是否為數值,奇數才 TRUE,其他或錯誤回 FALSE

=IFERROR(AND(ISNUMBER(A2),ISODD(A2)),FALSE)

D2 放第二條,再往下填到 D5:

Google 試算表公式
fx

字數嚴格大於五才符合

=LEN(B2)>5
資料列奇數規則字數規則
第 2 列:5/ABCDETRUEFALSE
第 3 列:8/ABCDEFFALSETRUE
第 4 列:文字/你好FALSEFALSE
第 5 列:留空FALSEFALSE

接著選 A2:A5,在「格式」>「條件式格式設定」選自訂公式,貼上第一條,字型選藍色、底色不變。再對 B2:B5 建立第二條規則,字型選紅色。兩個規則分開設定,各自以套用範圍左上角為基準。這是改變顯示樣式,不是阻止輸入的資料驗證。

建好之後可以改值觀察顏色:A3 從 8 改 7,字會變藍,改回 8 就恢復黑字;B2 從 ABCDE 改 ABCDEF,字會變紅,還原五字後恢復黑字。

這個奇偶練習限定整數;來源若可能含小數,先另外訂好有效值與處理規則。LEN 算字元長度,空格也算;不是畫面寬度或所有語言的字詞數。IFERROR 是明訂「有錯就不標」,不是證明來源沒有問題。

以上兩個小規則放在獨立練習表;接下來回到茶飲目標表,觀察整列標色時的參照。

後面大多用這張茶飲目標表,放在 A1:C6:

品項目標實際
蘋果紅茶12097
蘋果綠茶90112
青茶6058
鮮奶茶8080
冬瓜檸檬7041

我想讓「實際低於目標」的整列變色。

公式是以套用範圍的左上角寫的

自訂公式只寫一次,但 Google 試算表會把它當成「寫在套用範圍左上角那一格」,再往右往下平移到其他格子。套用範圍 A2:C6,左上角就是 A2,所以公式要寫第 2 列的版本:

Google 試算表公式
fx

套用範圍 A2:C6,實際低於目標就標色

=$C2<$B2

套用範圍 A2:C4 的小表:公式比較 $C2 是否小於 $B2,鎖定 B、C 欄,每列看自己那一列,第 2 與第 4 列被標色← 左右滑動看完整的圖,點圖可放大

圖:欄鎖死、列跟著走,同一列的 A、B、C 三格得到同一個判斷,整列一起變色。

每一列的判斷結果:

列品項判斷
2蘋果紅茶TRUE
3蘋果綠茶FALSE
4青茶TRUE
5鮮奶茶FALSE
6冬瓜檸檬TRUE

鮮奶茶剛好 80 對 80,小於不成立,所以不標。要含等於的話,改成 <=。

三種 $ 放錯的長相

列號寫成別列

套用範圍從 A2 開始,卻把公式寫成 ,每一格都會去看下面那一列。

列品項判斷
2蘋果紅茶FALSE
3蘋果綠茶TRUE
4青茶FALSE
5鮮奶茶TRUE
6冬瓜檸檬FALSE

整排跟正確答案剛好相反,看起來像顏色「差一列」。最常發生在套用範圍包含標題列(從 A1 開始)的時候:公式就得寫第 1 列的版本。我自己的習慣是先看側邊欄的套用範圍左上角是哪一格,再決定公式裡的列號。

欄號沒鎖

寫成 ,沒有 $。套用範圍 A2:C6 裡,A 欄的格子用 C2<B2,往右一欄的 B 欄會平移成 D2<C2,C 欄是 E2<D2。

列A 欄B 欄C 欄
2TRUETRUEFALSE
3FALSETRUEFALSE
4TRUETRUEFALSE
5FALSETRUEFALSE
6TRUETRUEFALSE

A 欄剛好是對的,B 欄全部標色(D 欄是空白,空白被當 0,0 小於 97 成立),C 欄一個都不標(E、D 都空白,0 小於 0 不成立)。畫面上就是整排「目標」欄變色、「實際」欄不變,很怪。

全部鎖死

寫成 ,每一格都只看第 2 列,97 小於 120 成立,整個範圍 5 列全部都是 TRUE,全表一起變色。

$ 放在欄號前鎖欄,放在列號前鎖列,這在 參照的藝術 有圖說明。條件式格式的規則是:整列標色,欄鎖死、列不鎖。

橫向的表要鎖列

如果資料是橫著擺的,目標在第 1 列、每週的實際往下擺,要鎖的就是列。表格放在 A1:E3,B 到 E 是四個品項:

列BCDE
1(目標)120906080
2(第 1 週)971125880
3(第 2 週)130856179

套用範圍 B2:E3,要讓實際低於同欄的目標變色,公式是:

Google 試算表公式
fx

橫向表:每格跟自己欄最上面的目標比

=B2<B$1

這邊 B$1 的列號鎖住,每一格都往第 1 列找目標,欄號不鎖,往右走就看 C、D、E。結果:

列BCDE
2TRUEFALSETRUEFALSE
3FALSETRUEFALSETRUE

四種寫法放一起看:

寫法欄列用在
$C2鎖跟著走整列標色
C$2跟著走鎖橫向表、整欄標色
$C$2鎖鎖一個固定的目標格
C2跟著走跟著走每格只看自己,例如單格比較

跨工作表參照要用 INDIRECT

我想讓「下架」工作表 A 欄列出的品項,在目前這張表的 A 欄標色。直覺的寫法是:

Google 試算表公式
fx

直接參照另一個工作表

=COUNTIF(下架!A2:A, $A2)>0

條件式格式的規則不接受直接參照別張工作表,這條公式存不下來,側邊欄會顯示錯誤。要繞過去,把範圍包進 INDIRECT,用文字描述位置:

Google 試算表公式
fx

用 INDIRECT 讀另一個工作表的清單

=COUNTIF(INDIRECT("下架!A2:A"), $A2)>0

INDIRECT 吃一段文字,把它當成範圍。因為是文字,工作表名稱有空格或特殊符號時,要在文字裡把名稱用單引號包起來,像 INDIRECT("'下架 清單'!A2:A")。

同樣的,$A2 還是寫套用範圍左上角的版本。

為了好驗證,下面把清單放在同一張表,跨表時只要把 H2:H 換成 下架!A2:A。我把下架清單放在 H2:H3(青茶、烏龍茶),A2:A6 是蘋果紅茶、青茶、鮮奶茶、冬瓜檸檬、烏龍茶, 的判斷結果:

列品項判斷
2蘋果紅茶FALSE
3青茶TRUE
4鮮奶茶FALSE
5冬瓜檸檬FALSE
6烏龍茶TRUE

文字寫的範圍不會跟著你插入或刪除列而調整,這是 INDIRECT 的通性,細節在 動態參照的謹慎使用指南。如果清單常常動,我會改成在本表隱藏欄用公式把清單帶過來,規則就只參照本表。

公式回傳錯誤時,規則不會套用

另一張表,目標有 0 和空白:

品項目標實際
蘋果紅茶12097
青茶05
鮮奶茶12
冬瓜檸檬7041

想標出達成率低於 80% 的品項,規則寫 。判斷結果:

列品項判斷
2蘋果紅茶FALSE
3青茶#DIV/0!
4鮮奶茶#DIV/0!
5冬瓜檸檬TRUE

蘋果紅茶是 97 / 120 約 0.808,不低於 0.8,所以不標。青茶和鮮奶茶的分母是 0,公式回 #DIV/0!。預期的行為是規則公式回傳錯誤時不套用格式,也不會跳任何提醒,結果這兩列永遠不會標色。表面看起來像「沒問題」,其實是漏掉了。

要看你想怎麼處理這兩列,有兩種寫法:

Google 試算表公式
fx

錯誤也當作需要注意,標色

=IFERROR($C2/$B2<0.8, TRUE)
Google 試算表公式
fx

分母不大於 0 就不標,其他才比

=IF($B2>0, $C2/$B2<0.8, FALSE)

第一個版本會把三列(青茶、鮮奶茶、冬瓜檸檬)全標;第二個版本只標冬瓜檸檬。我個人偏好第一種,因為目標是 0 或沒填,本身就值得看一眼。

有人會想用 AND($B2>0, $C2/$B2<0.8),但 AND 不會跳過後面的條件,兩個參數都會算,分母是 0 時一樣回 #DIV/0!。要避開除以 0,用 IF。

日期比較被時間吃掉

到期欄如果是「日期加時間」,像 2026/10/11 09:00,它是 46306.375 這種帶小數的數字,而 TODAY() 只是當天 0 點。假設今天是 2026/10/11,到期欄是這四筆:

到期時間等於今天INT 後等於今天小於等於今天INT 後小於等於今天
2026/10/10 23:00FALSEFALSETRUETRUE
2026/10/11 09:00FALSETRUEFALSETRUE
2026/10/11 18:30FALSETRUEFALSETRUE
2026/10/12 08:00FALSEFALSEFALSEFALSE

四欄的公式依序是 、、、。INT 把小數的時間部分砍掉,只剩日期,這樣「今天到期」才會成立。想要「今天以前到期」,用 。

另一種情況是到期日是文字,靠左對齊,看起來像日期。文字拿來跟日期比大小,結果永遠是文字比較大,所以 不管寫什麼日期都是 FALSE。這些日期如果是 2026/10/05 的文字,結果是(要做出文字日期,先把儲存格格式設成「純文字」再輸入,或在日期前面加一個單引號 ',否則 Sheets 會自動把它轉成真正的日期):

到期日(文字)$B2<TODAY()DATEVALUE($B2)<TODAY()
2026/10/05FALSETRUE
2026/10/20FALSEFALSE

先用 DATEVALUE 把文字轉成日期再比,才會對。文字日期的辨認和轉換在 日期與時間入門 有說,條件式格式只是會讓你更快發現這個問題。

1

找出錯在哪

茶飲目標表(A1:C6)的套用範圍是 A2:C6,想在「實際低於目標」時整列變色,卻把公式寫成 ,結果 A 欄、B 欄、C 欄各是什麼樣子?請寫出改正後的公式。

這題的原因在「三種 $ 放錯的長相」那節:A 欄剛好對,B 欄全標,C 欄全不標。自訂公式寫完,我都會先開一欄輔助欄貼同樣的公式,TRUE 的列才是之後會變色的列。

這個步驟如果每週都要重做

現在
每天打開目標表,靠顏色找出低於目標的品項,再逐一通知負責人
自動化後
每天自動找出實際低於目標的品項,把清單寄給負責的人
有類似需求,可以來信聊聊
分享:
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

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

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

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

免費,隨時可取消。

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