為什麼我的 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:
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:
以 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 入門 有講,這邊就不重複了。
動手練習
找出錯在哪
同事想算「門市或備註是急單」的總杯數,寫了:
得到的數字比自己手算的大。請說明原因,並改成正確的算式。
想看這些函式怎麼組成一張門市 × 月份的月報,可以接著看 月報表怎麼做:用 SUMIFS 做門市 × 月份彙總與達成率。
如果要的不是加總,而是「品項加杯型」對應的那一個單價,那是查值,不是 SUMIFS 的工作,寫法在 XLOOKUP 兩個條件一起找。
試著把自己的資料套進這幾條看看吧!我是喜特先生,Mr. Sheet,我們下個教學見!
這個步驟如果每週都要重做
- 現在
- 每月初改日期區間,重算各門市、各品項的杯數再貼進月報
- 自動化後
- 月初自動算出上個月各門市、品項的杯數,寄到你的信箱
接下來可以
這篇在技能樹的 Lv.2「進階分析」,模組「條件式計算」(第 2/2 篇)。讀完這篇,路線上的下一個模組是「計算日期與時間差」。
回到技能樹相關文章
查看所有文章留言討論
共 0 則留言
