跳到主要內容跳到頁尾

SUMIFS 進階陷阱:多條件、日期區間、萬用字元與 MAXIFS

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

整理 SUMIFS、COUNTIFS 多條件加總常踩的坑:參數順序和 SUMIF 相反、範圍大小不一致、日期區間與文字日期、OR 條件重複計算、萬用字元與 ~ 跳脫、空白條件,以及 MAXIFS、MINIFS、AVERAGEIFS 與 COUNTUNIQUEIFS。

發布 更新

文章目錄

為什麼我的 SUMIFS 沒有報錯,加總卻是 0?多半是參數順序、日期型別,或是條件寫法出了小狀況。單一條件的 SUMIF / COUNTIF 基本用法在 SUMIF 與 COUNTIF 入門 講過了,這邊直接從會出事的地方開始。

後面的例子都用這張茶飲訂單,放在 A1:E11:

日期品項通路杯數備註
2026/09/03蘋果紅茶門市37
2026/09/09蘋果綠茶外送112急單
2026/09/17青茶門市8
2026/09/28鮮奶茶外送24滿額*
2026/10/01蘋果紅茶外送48
2026/10/02冬瓜檸檬門市19急單
2026/10/05青茶外送15滿額送杯
2026/10/08蘋果烏龍茶門市66
2026/10/10蘋果紅茶門市29急單
2026/10/10鮮奶茶門市41

參數順序跟 SUMIF 相反

SUMIF 的加總範圍放最後而且選填,SUMIFS 的加總範圍放最前面,後面才是一組一組的「條件範圍、條件」。依照 官方說明,語法是:

我想算蘋果紅茶的總杯數,手算是 37 + 48 + 29 = 114。SUMIF 寫成:

來看看結果:114。換成 SUMIFS,D 欄要搬到最前面:

一樣是 114。最容易踩到的是照 SUMIF 的習慣擺順序,條件範圍放前面、加總範圍放後面:

這條不會報錯,結果是 0。因為它拿 B 欄當加總範圍,又去 D 欄找文字「蘋果紅茶」,D 欄全是數字,一個都對不上,B 欄又都是文字,沒東西可加。看到莫名其妙的 0,我第一個先檢查這件事。

範圍大小要一樣

每一組條件範圍的列數、欄數,都要跟加總範圍一樣。COUNTIFS 的官方說明 也寫了,其餘的範圍,列數與欄數都要跟第一個條件範圍相同。我自己拉長資料時,最常漏掉其中一個。

這條會得到 #VALUE!,加總範圍是 10 列、條件範圍只有 9 列。新增一列資料後,只有一邊被拉長,也是同樣的下場。我個人習慣範圍的頭尾都寫清楚,要整欄就全部寫整欄,不要混著用。

日期區間

我想算 10 月的總杯數,手算是 48 + 19 + 15 + 66 + 29 + 41 = 218。日期區間要拆成兩個條件,用 & 把運算子和日期接起來:

來看看結果:218。結束日用「小於下個月 1 號」,比「小於等於 31 號」好改,月底有幾天都不必算,資料帶時間的時候也不會漏掉當天下午的那幾筆。

寫成 ">=DATE(2026,10,1)" 的話,整個條件會被當成一串文字,函式沒辦法幫你算。

區間日期放在儲存格會更好維護。G2 放開始日 2026/10/05,H2 放結束日 2026/10/10:

得到 151,也就是 15 + 66 + 29 + 41。結束日要包含當天,所以條件是「小於 H2 加 1」,加 1 就是隔天零點。

文字長得像日期

從別的系統匯出的日期,常常看起來一模一樣,其實是文字。判斷方法很簡單,儲存格預設會靠左,或用 ISNUMBER 檢查:

真正的日期會得到 TRUE,文字日期是 FALSE。假設 A 欄是文字日期,上面那條 10 月的算式會得到 0,因為條件拿真正的日期去比,文字日期不在比較範圍內。解法是先把日期欄轉成真正的日期,我會在旁邊加一欄輔助欄 ,再拿輔助欄當條件範圍。

OR 條件

SUMIFS 所有條件都要同時成立,也就是 AND,沒有 OR。同一欄的 OR,最直覺的做法是拆開相加。我想算蘋果紅茶或青茶在 10 月的杯數,48 + 15 + 29 = 92:

Google 試算表公式
fx

10 月兩品項杯數:兩個 SUMIFS 都保留相同起迄日期

=SUMIFS( D2:D11, B2:B11, "蘋果紅茶", A2:A11, ">="&DATE(2026,10,1), A2:A11, "<"&DATE(2026,11,1) ) + SUMIFS( D2:D11, B2:B11, "青茶", A2:A11, ">="&DATE(2026,10,1), A2:A11, "<"&DATE(2026,11,1) )

結果是 92。品項不只兩個的時候,這條公式會長到沒人想維護,我改用 FILTER 加 SUM:

Google 試算表公式
fx

以 FILTER 逐項檢查月份與品項,再用 SUM 加總

=SUM( FILTER( D2:D11, A2:A11 >= DATE(2026,10,1), A2:A11 < DATE(2026,11,1), (B2:B11="蘋果紅茶")+(B2:B11="青茶") ) )

一樣是 92。兩種寫法都設開始與結束日。擴充資料時須同步延伸所有範圍。兩個品項相加的括號,代表「蘋果紅茶或青茶」,FILTER 的各個條件之間則是 AND。SUMPRODUCT 也寫得出來,不過 FILTER 的條件一條一條分開寫,一眼看得到,所以我比較常用 FILTER。更多 FILTER 的細節在 FILTER 函式。

如果 OR 的兩個條件分別在不同欄,相加會重複算到同時符合兩邊的列,這個放在文末的練習。

萬用字元

條件裡的 * 代表任意個字(含 0 個),? 代表剛好一個字。

得到 226,也就是蘋果紅茶 114 加上蘋果綠茶 112。蘋果烏龍茶中間有兩個字,所以不算。把 ? 換成 *:

得到 292,蘋果烏龍茶的 66 也加進來了。計數也是同樣寫法,數品項裡有「茶」字的筆數:

結果是 9,只有冬瓜檸檬沒有茶。

資料裡本來就有 * 呢?備註欄有「滿額*」和「滿額送杯」兩筆。直接寫 "滿額*",* 當萬用字元,兩筆都會被數到:

得到 2。要找真的星號,前面加波浪號 ~:

這樣只會得到 1。

空白與非空白

備註欄有一半是空的。條件寫 "" 就是找空白,"<>" 是找有東西的:

得到 5。

也是 5。加總也可以這樣用,沒有備註的訂單共幾杯:

結果是 200。

MAXIFS、MINIFS、AVERAGEIFS

這三個跟 SUMIFS 一樣有「條件範圍、條件」成對的結構,參數順序也是要算的範圍放第一個。

外送單裡,單筆最多是幾杯:

得到 112。門市單裡最少的一筆:

得到 8。蘋果紅茶平均一筆幾杯,手算是 (37 + 48 + 29) / 3 = 38:

結果是 38。要注意,如果沒有任何一列符合條件,AVERAGEIFS 會得到 #DIV/0!,因為平均要除以 0 筆。

COUNTUNIQUEIFS

數「不重複」的有幾個,可以用 COUNTUNIQUEIFS,這個函式是 Google 試算表自己的,語法是 。門市單裡賣過幾種品項:

得到 5,蘋果紅茶出現兩次只算一種。COUNTIF 系列的基本用法在 SUMIF 與 COUNTIF 入門 有講,這邊就不重複了。

動手練習

1

找出錯在哪

同事想算「門市或備註是急單」的總杯數,寫了:

得到的數字比自己手算的大。請說明原因,並改成正確的算式。

想看這些函式怎麼組成一張門市 × 月份的月報,可以接著看 月報表怎麼做:用 SUMIFS 做門市 × 月份彙總與達成率。

如果要的不是加總,而是「品項加杯型」對應的那一個單價,那是查值,不是 SUMIFS 的工作,寫法在 XLOOKUP 兩個條件一起找。

試著把自己的資料套進這幾條看看吧!我是喜特先生,Mr. Sheet,我們下個教學見!

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

現在
每月初改日期區間,重算各門市、各品項的杯數再貼進月報
自動化後
月初自動算出上個月各門市、品項的杯數,寄到你的信箱
有類似需求,可以來信聊聊
分享:
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

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

接下來可以

這篇在技能樹的 Lv.2「進階分析」,模組「條件式計算」(第 2/2 篇)。讀完這篇,路線上的下一個模組是「計算日期與時間差」。

回到技能樹

相關文章

查看所有文章

留言討論

共 0 則留言

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

免費,隨時可取消。

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