數位工具

SUMIF 與 SUMIFS 用法:條件寫法、日期區間到算出 0 的原因

銷售紀錄只有 10 列的時候,想知道名片這個品項累計賣了多少,眼睛掃過去再心算一下就有答案。等到紀錄長到幾百列,名片、海報、型錄混在同一欄,客戶、管道、日期又各自交錯,手算既慢又容易漏掉一筆,這正是 SUMIF 派得上用場的情境。

SUMIF 的工作很單純,就是先挑出符合條件的列,再把這些列的金額加起來。SUMIF用法看起來很簡單,只有三個引數,寫出來卻算不對的時候,問題通常出在第二個引數,也就是條件怎麼寫。引號要不要加、比較符號怎麼接日期、想算「型錄開頭的所有品項」又該用什麼符號,每一個都是容易出錯的地方;條件超過一個時,還得換成引數順序不同的 SUMIFS。

把這幾個地方弄清楚,不論是品項合計、依月份統計,還是「名片或海報」這種二選一的條件,都能自己組出公式,不必每次重新搜尋範例。只是在動手寫條件之前,得先釐清 SUMIF 在哪一欄做判斷、又在哪一欄做加總,後面每一種寫法都建立在這個分工上。

SUMIF 是什麼?

SUMIF 是 Excel 裡「按條件加總」的函數。只要指定一欄拿來判斷的儲存格和一個判斷條件,再指定要加總的那一欄,Excel 就只把符合條件的列加起來。Microsoft 的說明指出,它的用途是加總範圍內符合指定準則的值,語法如下,方括號代表第三個引數可以省略。

SUMIF(range, criteria, [sum_range])Code language: Excel (excel)

為了讓每個範例都能對照著算,後面的公式全部使用同一張銷售紀錄。它是虛構的示範資料,放在 A1:E11,第 1 列是欄位名稱,A 欄是客戶,B 欄是品項,C 欄是金額,D 欄是成交日,E 欄是銷售管道,其中第 5 列的管道是空的,後面談空白條件時會用到。

列A 客戶B 品項C 金額D 成交日E 管道
2龐果設計名片30002026/9/3線上
3龐果協會型錄-A485002026/9/8門市
4龐果設計海報52002026/9/12線上
5龐果協會名片24002026/9/18
6龐果設計型錄-A5120002026/9/25門市
7龐果協會海報48002026/9/30線上
8龐果設計型錄-A496002026/10/5線上
9龐果協會貼紙18002026/10/9門市
10龐果設計名片36002026/10/14門市
11龐果協會型錄-A572002026/10/20線上

想知道名片這個品項共賣了多少,公式這樣寫:

=SUMIF(B2:B11,"名片",C2:C11)Code language: Excel (excel)

結果是 9000。Excel 會逐列檢查 B 欄,遇到內容是「名片」的列,就把同一列 C 欄的金額加進來,也就是第 2、5、10 列的 3000、2400、3600。搜尋 SUMIF Excel 公式時看到的各種範例,骨架都和這一行一樣,差別只在第二個引數怎麼寫。

range、criteria、sum_range 三個引數的分工

三個引數可以用「判斷欄」「條件」「加總欄」這三個白話詞來記。range 是判斷欄,也就是拿來檢查條件的那一欄;criteria 是條件,描述什麼樣的內容算符合;sum_range 是加總欄,只有條件成立的列,才會把這一欄的數字加進來。以剛才的公式來說,判斷欄是 B 欄的品項,加總欄是 C 欄的金額,條件是「名片」。

SUMIF 公式中 B2:B11 是判斷欄、"名片" 是條件、C2:C11 是加總欄,符合的三列合計 9000
SUMIF 在 B 欄找出品項是名片的第 2、5、10 列,再把同一列 C 欄的金額加總成 9000(示意圖)。

判斷欄與加總欄要逐列對應,示範公式裡兩者都從第 2 列取到第 11 列,Excel 才能把第幾列的判斷結果,對應到同一列的金額。兩個範圍的起訖列因此要保持一致,只要其中一個多取或少取一列,整組對應就會錯位。

條件這個引數可以放的東西不少。Microsoft 的說明列出的類型有數字、運算式、儲存格參照、文字和函數,也就是 "名片"、5000、">5000"、F2 這幾種寫法都行。

另外,文字比對一般不分英文大小寫,所以條件寫 "pongo" 或 "PONGO",找到的是同一批儲存格。

sum_range 省略或大小不同時的實際加總範圍

第三個引數是選用的。省略它的時候,Excel 直接加總判斷欄本身,適合「判斷的那一欄就是要加總的那一欄」的情況,例如只加總大於 5000 的金額:

=SUMIF(C2:C11,">5000")Code language: Excel (excel)

結果是 42500,也就是 8500、5200、12000、9600、7200 這五筆的合計。判斷與加總都在 C 欄,所以不需要再指定另一欄。

加總欄和判斷欄是不同欄時,才需要第三個引數。Microsoft 說明了它的對應規則:實際加總的是從 sum_range 第一個儲存格起、大小與 range 相同的範圍。說明裡舉的例子是 range 為 A1:A5、sum_range 寫成 B1:K5,實際被加總的只有 B1:B5,而不是整塊 B1:K5。

SUMIF 容許兩個範圍大小不同,但 Microsoft 同時建議兩者的大小與形狀一致,否則效能可能變差,實際加總的也會是照上面規則換算出來的範圍,不一定是自己框選的那一塊。最穩的習慣是讓判斷欄和加總欄用同樣的起訖列,像示範表那樣一律是第 2 列到第 11 列。

SUMIF 準則的引號規則與常見寫法

SUMIF 最容易寫壞的地方是條件的書寫格式,因為比較符號和值要合成一段文字,再整段放進引號。Microsoft 的說明指出,文字準則與含邏輯或數學符號的準則必須用雙引號括住,純數值的準則則不需要。把「我想算的條件」對應到「準則怎麼寫」,常見的幾種如下:

想算的條件判斷欄準則寫法範例結果
品項是名片B 欄"名片"9000
金額大於 5000C 欄">5000"42500
品項不是名片B 欄"<>名片"49100
管道沒填E 欄""2400
管道有填E 欄"<>"55700

表中的結果都以前面的示範表計算,可以拿來對照自己寫出的公式。

文字準則要加雙引號,單純的數字可以不加

比對文字,條件就放進雙引號裡。「等於」不必另外寫 =,直接寫 "名片" 就行:

=SUMIF(B2:B11,"名片",C2:C11)Code language: Excel (excel)

結果是 9000。條件如果是單純的數字,例如 5000,可以不加引號;但只要數字前面帶了 >、<、= 這類符號,整段包括數字都要放進引號,也就是 ">5000",而不是 >5000,也不是 >"5000"。

另一個要留意的是,"名片" 比對的是儲存格內容完全等於「名片」。像「名片套組」這種多了幾個字的儲存格,不會被加進來,要做部分比對得改用萬用字元。

大於、小於與不等於條件的寫法

比較符號可以整理成一組,每一個都是符號加值,再整段放進引號:

  • ">5000" 代表大於 5000
  • ">=5000" 代表大於或等於 5000
  • "<5000" 代表小於 5000
  • "<=5000" 代表小於或等於 5000
  • "<>名片" 代表不等於「名片」

要算不是名片的所有品項金額,寫成:

=SUMIF(B2:B11,"<>名片",C2:C11)Code language: Excel (excel)

結果是 49100,剛好是全部金額 58100 扣掉名片的 9000。<> 後面直接接要排除的值,中間不留空格。Microsoft 說明 SUMIFS 時,範例也用 "<>香蕉" 來排除某個品項,可見不等於是正式支援的寫法。

大於與大於等於的差別,在於剛好等於界線值的那一筆算不算。">5000" 不含剛好 5000 的列,">=5000" 則含。示範表裡沒有金額剛好 5000 的列,所以兩種寫法的結果相同,但分級統計時,這一個符號就會讓合計差一筆。

空白與非空白儲存格的準則

想算管道欄沒填的金額,準則寫成一組空的雙引號:

=SUMIF(E2:E11,"",C2:C11)Code language: Excel (excel)

結果是 2400,也就是第 5 列那筆名片。Microsoft 的範例也用同樣的寫法 =SUMIF(A2:A7,"",C2:C7),來加總沒有填類別的銷售額。

反過來,想算管道欄有填的金額,一般用 "<>" 代表「不是空白」:

=SUMIF(E2:E11,"<>",C2:C11)Code language: Excel (excel)

結果是 55700。把兩個結果加起來,2400 加 55700 等於 58100,與全部金額相符,代表沒有哪一列被漏掉。這種「有與沒有」的拆分,用來核對資料是否完整很方便。

用萬用字元加總名稱部分相同的品項

品項名稱不一定是整齊的單一詞,像示範表裡的型錄就分成「型錄-A4」和「型錄-A5」。想一次把型錄都算進來,條件寫 "型錄" 是不行的,因為這樣只會比對內容完全等於「型錄」的儲存格。這時就需要萬用字元,其中 * 代表任意長度的一串字元,? 代表單一字元,這是 Microsoft 的說明列出的兩個符號。

比對開頭相同的品項,把 * 放在後面:

=SUMIF(B2:B11,"型錄*",C2:C11)Code language: Excel (excel)

結果是 37300,包含型錄-A4 的 8500 與 9600,以及型錄-A5 的 12000 與 7200。比對結尾相同的品項,則把 * 放在前面,例如只算 A4 規格的品項:

=SUMIF(B2:B11,"*-A4",C2:C11)Code language: Excel (excel)

結果是 18100,也就是第 3、8 列。名稱的前後各放一個 *,如 "*型錄*",代表只要內容的任何位置含有「型錄」就算符合,在示範表上結果同樣是 37300。

? 的用途是限定字數。"型錄-A?" 表示「型錄-A」後面剛好再接一個字元,型錄-A4 與型錄-A5 都符合,所以結果也是 37300,與 "型錄*" 相同。需要精準限定長度、避免比到太長的名稱時,? 比 * 嚴格。

萬用字元條件比對結果:型錄*、*型錄*、型錄-A? 都加總到 37300,*-A4 只算到 18100
條件只寫「型錄」找不到任何一列,加上 * 或 ? 才能把型錄-A4 與型錄-A5 一起算進來。

萬用字元本身也可能是資料的一部分。要比對真正的星號或問號,就在它前面加上波狀符號 ~,例如品項名稱裡真的有「特價*」這個星號,條件要寫成 "特價~*",Excel 才會把星號當成一般字元,而不是萬用字元。

萬用字元是拿來比對文字的,對純數字沒有作用,數字的範圍要改用前面介紹的比較符號。另外,這些寫法放進 SUMIFS 的條件裡也一樣有效,SUMIFS用法在準則這部分與 SUMIF 完全相同,不必另外記一套。

準則放進儲存格,複製公式時就不必逐一修改

條件寫死在公式裡,每換一個條件就得改一次公式,要算五個品項就要改五次。比較好的做法是把條件放進另一個儲存格,公式去引用那一格,再往下複製成一張彙總表。這種寫法有兩個重點,一是比較符號接儲存格時要用 & 連接,二是範圍要用 $ 鎖住。

帶 >、< 等符號的準則要用 & 接上儲存格

準則只有一個儲存格參照時,直接放進去就行,不加引號。例如 F2 這一格輸入「名片」,公式寫 =SUMIF(B2:B11,F2,C2:C11),結果與直接寫 "名片" 相同,都是 9000。

條件帶有比較符號時,符號要用引號括住,再用 & 和儲存格接起來。假設 G1 放著 5000:

=SUMIF(C2:C11,">"&G1)Code language: Excel (excel)

結果是 42500,與直接寫 ">5000" 一樣。& 的作用是把引號裡的「>」和 G1 的內容接成一段文字 ">5000",再交給 SUMIF 判斷。Microsoft 的範例也是這樣寫,=SUMIF(A2:A5,">" & C2,B2:B5) 加總房產價值大於 C2 的佣金。

用 SUMIF Excel 公式最常見的失誤之一,是把儲存格地址一起放進引號,寫成 ">G1"。這樣 Excel 會把 G1 當成兩個字的文字,而不是 G1 這一格裡的內容,條件就變成「大於 G1 這個文字」,結果自然不是想要的數字。

鎖定範圍後往下複製成彙總表

把品項清單排在示範表右側的 F 欄,F2 到 F6 依序是名片、型錄-A4、型錄-A5、海報、貼紙,旁邊一欄放公式:

=SUMIF($B$2:$B$11,F2,$C$2:$C$11)Code language: Excel (excel)

寫好第一列後往下複製到第 6 列,就能一次得到每個品項的合計。輸入範圍後按 F4,就能幫範圍加上 $。

範圍鎖定、條件不鎖定,是因為複製公式時兩種參照的行為不同。加了 $ 的絕對參照,複製到哪一列都固定指向 B2:B11 與 C2:C11 這個資料區;沒加 $ 的 F2 是相對參照,往下複製時會依序變成 F3、F4,條件才會跟著品項換。

彙總表的結果依序是 9000、18100、19200、10000、1800,合計 58100,與全部金額核對得上,代表沒有品項被漏掉。合計對不起來的時候,多半是清單少列了某個品項,或是品項名稱多了空格、寫法與資料欄不一致。

用 $ 鎖住 B 欄與 C 欄範圍、條件引用 F 欄,往下複製後得到五個品項的合計,總和 58100
範圍加 $ 固定、條件 F2 不加 $,公式往下複製就會依序改成 F3、F4,一次算出五個品項的合計(示意圖)。

SUMIFS 的加總範圍排在第一個引數

條件超過一個,就要換成 SUMIFS。它和 SUMIF 最大的差異有兩個,一是加總範圍從第三個引數搬到第一個,之後每個條件都以「條件範圍加條件」成對出現,二是所有條件要同時成立,那一列才會被加總。SUMIFS用法要弄清楚的,幾乎就是這兩件事。

SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)Code language: Excel (excel)

Microsoft 的說明指出,SUMIFS 最多可以放 127 組範圍與準則,並特別提醒,SUMIFS 的 sum_range 是第一個引數,SUMIF 則是第三個。把 SUMIF 的公式改成 SUMIFS,或是複製其中一個去改另一個的時候,引數順序是最容易被弄反的地方。

以示範表為例,龐果設計的型錄金額,寫成:

=SUMIFS(C2:C11,A2:A11,"龐果設計",B2:B11,"型錄*")Code language: Excel (excel)

結果是 21600,也就是型錄-A5 的 12000 加上型錄-A4 的 9600。龐果設計在線上管道的金額,則寫成:

=SUMIFS(C2:C11,A2:A11,"龐果設計",E2:E11,"線上")Code language: Excel (excel)

結果是 17800。每個條件的準則寫法,包括引號、比較符號與萬用字元,都和 SUMIF 相同,不需要另外學一套。

多個條件同時成立的列才會被 SUMIFS 加總

SUMIFS 的條件之間是「而且」的關係,只要有一個條件不成立,那一列就不會被加總。以「龐果設計且管道是線上」為例,示範表裡只有第 2、4、8 列同時符合,所以結果是 3000、5200、9600 的合計 17800。Microsoft 的範例同樣是加總兩個條件都成立的銷售數量。

SUMIFS 以 C 欄為加總範圍,客戶是龐果設計且管道是線上的第 2、4、8 列合計 17800
SUMIFS 的加總範圍排在第一個,客戶與管道兩個條件同時成立的列才會被加總(示意圖)。

只有一個條件時,用 SUMIF 就夠了。不過用 SUMIFS 寫單一條件也行,兩者的結果完全相同,差別只在引數的順序:

=SUMIF(B2:B11,"名片",C2:C11)
=SUMIFS(C2:C11,B2:B11,"名片")Code language: Excel (excel)

這兩行算出來都是 9000。習慣只用 SUMIFS 的人,之後要加條件時只需要在後面多接一組,不必改寫整個公式。

還有一點值得留意,Microsoft 說明 sum_range 中的 TRUE 會被當成 1,FALSE 則當成 0。如果加總欄混進了邏輯值,合計就會出現意料之外的數字,所以加總欄最好只放單純的數值。

SUMIFS 的加總範圍與條件範圍大小必須一致

根據 Microsoft 的說明,SUMIFS 要求加總範圍與每一個條件範圍的列數、欄數完全一致,大小不一致就會得到 #VALUE!。舉例來說,下面這個公式的加總範圍只有 9 列,條件範圍卻有 10 列:

=SUMIFS(C2:C10,A2:A11,"龐果設計")Code language: Excel (excel)

結果是 #VALUE!。把兩個範圍改成一樣長,就能算出正確結果:

=SUMIFS(C2:C11,A2:A11,"龐果設計")Code language: Excel (excel)

結果是 33400,也就是龐果設計的 3000、5200、12000、9600、3600 合計。

這是 SUMIF 與 SUMIFS 容易被忽略的一個差別。Microsoft 指出 SUMIF 可以使用大小不同的範圍,所以同樣的錯位寫法放在 SUMIF 裡不會報錯,反而更難察覺。

SUMIFS 的條件範圍彼此不必相鄰,只要大小一致就行。前面的例子裡,一個條件看 A 欄的客戶,另一個看 E 欄的管道,中間隔著好幾欄也沒有問題。

日期準則交給 DATE 函數或儲存格

報表一定會遇到「某一天之後」「某個月份」的加總。日期的準則寫法和數字類似,但前提是 D 欄裡存的是真正的日期,而不是看起來像日期的文字。Excel 的日期底層其實是序列數字,所以日期才能用 >、< 這類符號比較大小。

寫日期條件時,最穩當的做法是用 DATE 函數產生日期,或是把日期放在另一格再用 & 引用。這兩種做法都能避開日期被當成文字的問題。

單一日期界線,SUMIF 就能處理

條件只有「某天之後」或「某天之前」這種單一界線時,SUMIF 就能處理。假設 G2 放著 2026/9/20,要加總這天之後成交的金額:

=SUMIF(D2:D11,">"&G2,C2:C11)Code language: Excel (excel)

結果是 39000。不想多佔一格的話,可以把日期直接寫進公式,用 DATE 函數組出來:

=SUMIF(D2:D11,">"&DATE(2026,9,20),C2:C11)Code language: Excel (excel)

結果同樣是 39000。不建議直接把日期打成文字放進引號,因為文字日期較容易受到系統日期格式的影響,不同電腦、不同區域設定下,解讀的結果可能不同。

條件也可以跟著今天走。Microsoft 的說明提到準則可以是 TODAY() 這類函數,所以 "<"&TODAY() 能加總成交日早於今天的金額,只是這種公式的結果每天都可能不同。

某段期間內的加總要拆成起迄兩個條件

「9 月 15 日到 10 月 15 日之間」其實是兩個條件,日期要大於或等於起日,而且小於或等於迄日。同一個日期欄要各用一次,所以得換成 SUMIFS。假設 G3 放著 2026/9/15,G4 放著 2026/10/15:

=SUMIFS(C2:C11,D2:D11,">="&G3,D2:D11,"<="&G4)Code language: Excel (excel)

結果是 34200。使用 >= 和 <=,代表起日與迄日當天的資料都算在內;如果希望不含迄日當天,把 <= 改成 < 就行。

SUMIFS 對 D 欄設定大於等於 G3、小於等於 G4 兩個條件,第 5 到 10 列落在期間內,合計 34200
同一個日期欄放進起日與迄日兩個條件,2026/9/15 到 2026/10/15 之間的金額合計 34200(示意圖)。

SUMIF 做不到這件事,原因只有一個,就是它只有一組條件,沒辦法對同一欄同時設定下限與上限。期間內還想再加一個條件的話,只要在後面多接一組範圍與準則,例如只算客戶是龐果設計的部分:

=SUMIFS(C2:C11,D2:D11,">="&G3,D2:D11,"<="&G4,A2:A11,"龐果設計")Code language: Excel (excel)

結果是 25200。

依月份加總時,用當月 1 日與下月 1 日取代 MONTH 函數

常有人想把公式寫成 SUMIF(MONTH(D2:D11),9,C2:C11),用 MONTH 函數取出月份再判斷。這種寫法行不通,因為 SUMIF 與 SUMIFS 的條件範圍要放真正的儲存格範圍,不能放函數運算出來的陣列,輸入時就會被 Excel 擋下,跳出公式有問題的提示。

正解是用「當月 1 日」到「下個月 1 日之前」兩個條件。9 月的合計寫成:

=SUMIFS(C2:C11,D2:D11,">="&DATE(2026,9,1),D2:D11,"<"&DATE(2026,10,1))Code language: Excel (excel)

結果是 35900。要算 10 月,把兩個 DATE 換成 DATE(2026,10,1) 和 DATE(2026,11,1),結果是 22200。9 月與 10 月合計 58100,與全部金額相符。

上界用「小於下個月 1 日」而不是「小於或等於月底」,是為了避免漏算。日期欄如果帶有時間,月底那天下午的紀錄會比「月底 0 點」晚,用 <= 月底就會被排除在外;改成小於下月 1 日,就不會有這個問題。

「或」條件在 SUMIFS 裡的兩種做法

SUMIFS 的多個條件一律是「而且」。想算「名片或海報」的金額,不能把兩個條件都放在品項這一欄,因為一筆資料不可能同時是名片又是海報:

=SUMIFS(C2:C11,B2:B11,"名片",B2:B11,"海報")Code language: Excel (excel)

結果是 0。SUMIF 一次只有一個條件,SUMIFS 能放多個條件,但這些條件是「且」不是「或」。要表達「或」有兩種做法,條件不多時,把各自的結果相加最直白,條件一多,用陣列常數寫起來比較短。

把兩個 SUMIFS 的結果相加

最容易理解也最不容易出錯的做法,是各算一次再相加:

=SUMIFS(C2:C11,B2:B11,"名片")+SUMIFS(C2:C11,B2:B11,"海報")Code language: Excel (excel)

結果是 19000,也就是名片的 9000 加上海報的 10000。每一段都是單一條件,讀起來一目了然。

缺點是條件一多,公式會變得很長。五個品項就要接五段 SUMIFS,改條件時也得逐段修改,漏改任何一段,結果就悄悄出錯。

用陣列常數搭配 SUM 一次算完

把多個條件包進大括號,變成 {"名片","海報"},SUMIFS 會對裡面每個條件各算一次,再由外層的 SUM 把結果加總:

=SUM(SUMIFS(C2:C11,B2:B11,{"名片","海報"}))Code language: Excel (excel)

結果同樣是 19000。大括號是直接輸入的,這種寫法叫陣列常數,不是按快速鍵自動產生的符號。

條件只有兩三個時,兩個 SUMIFS 相加並不比這個寫法難懂,選哪一種看個人習慣;條件有五個以上時,陣列常數就明顯短得多,只要在大括號裡多放幾個值即可。

SUMIF 算出 0 或出現錯誤的常見原因

用 SUMIF Excel 公式時,最讓人困擾的情況不是公式報錯,而是公式看起來沒錯,卻算出 0 或一個明顯不對的數字。這類狀況的原因有好幾種,彼此互不相干,對照自己遇到的症狀找出是哪一種,就能直接對症處理。

SUMIF 算出 0 或出現錯誤的五種情況,依症狀對照可能的原因與處理方式
結果顯示 0 先查文字準則的引號與被存成文字的數字,出現 #VALUE! 則檢查範圍大小與來源活頁簿。

文字準則漏了雙引號的狀況

Microsoft 在 SUMIFS 的常見問題裡,把「顯示 0 而不是預期的結果」的第一個原因指向文字準則。它的說法是,測試文字值(例如人名)時,要確認準則有放在引號內。

以示範表來說,"名片" 有引號才是正確的文字準則;少了引號的寫法,不會算出想要的 9000。Microsoft 在這個狀況只提到結果顯示 0,所以遇到異常的時候,先檢查文字條件有沒有加引號,是最快的排查方向。

改法很單純,文字準則一律用雙引號括住,帶比較符號的準則則整段放進引號。用 & 接儲存格時,引號只包住符號,儲存格參照本身不要放進引號。

被存成文字的數字與日期不會被當成數值比對

從別處貼過來的金額或日期,常會被存成文字格式。加總欄裡的文字不會被當成數值加進去,那幾筆就等於沒算;日期欄是文字的話,">"&G2 這類比較條件也比對不到,結果就會比預期少,甚至變成 0。

判斷的方法很簡單,數字預設靠右對齊,如果整欄金額都靠左,儲存格左上角又帶著綠色小三角,通常就是被存成文字了。這時只要把這一欄轉成數值格式,公式的結果就會回到預期的數字。

範圍沒有對齊時,SUMIF 與 SUMIFS 反應不同

範圍大小不一致時,SUMIFS 會直接顯示 #VALUE!,SUMIF 卻不報錯。它照著前面談過的規則,從加總欄的第一個儲存格起,取與判斷欄相同大小的範圍來加總,結果看起來正常卻是錯的,比報錯更難發現。

舉例來說,=SUMIF(A2:A11,"龐果設計",C3:C11) 的加總欄少取一列,又從第 3 列起算,Excel 會把它換算成與判斷欄同樣大小的 C3:C12,每一筆都對到下一列的金額,算出 24700,正確答案卻是 33400,過程中不會提出任何警告。同樣的範圍放進 SUMIFS,則會直接得到 #VALUE!。

SUMIF 加總欄寫成 C3:C11 時金額整組對到下一列,龐果設計合計從 33400 變成 24700
加總欄少取一列又錯開起點,SUMIF 不會報錯,卻算出 24700 而不是正確的 33400。

預防的做法是讓兩個範圍永遠一樣大、起訖列對齊。公式是從別處複製來、又調整過其中一個範圍的時候,特別要檢查兩邊的列號是不是同步。

參照已關閉的活頁簿與超過 255 字元的字串

還有兩個比較少見、但出了問題很難查的狀況。第一個是公式參照另一個沒有打開的活頁簿,Microsoft 說明這時 SUMIF 與 SUMIFS 會回傳 #VALUE!,解法是把來源活頁簿打開,再按 F9 重新計算。

第二個是準則的字串太長。Microsoft 指出,比對超過 255 個字元的字串,會得到不正確的結果;字串能縮短就縮短,無法縮短就拆成幾段較短的字串,再用 & 相接。

這兩種情況都屬於少數情境,大多數日常報表碰不到,遇到時再回頭查就行。

SUMIF 與 SUMIFS 最花功夫的部分是準則的寫法,其餘的引數大多只是指定範圍。引號、比較符號、萬用字元,以及用 & 接儲存格這套寫法學一次就通用,換成計數用的 COUNTIF 或求平均用的 AVERAGEIF,準則的規則也是一樣的。下次報表要換個統計方式,往往只需要換掉函數名稱,原本寫好的條件幾乎可以直接沿用。

手邊有銷售表的話,不妨先挑一個最常被問到的問題,用 SUMIF 算一遍,再逐步加上第二個條件,換成 SUMIFS。一次加一個條件、逐步擴充的公式,比一口氣寫出完整的長公式更不容易出錯。

常見問答

本區問答由 AI 依文章內容自動整理,僅供快速參考,正式內容仍以全文為準。

SUMIF 的三個引數各負責什麼?

SUMIF 的 range 是拿來判斷條件的那一欄,criteria 是條件本身,sum_range 是要加總的那一欄,只有條件成立的列才會把加總欄的數字加進來。判斷欄與加總欄的起訖列要保持一致,否則整組對應會錯位。

SUMIF 的第三個引數可以省略嗎?

SUMIF 的 sum_range 是選用引數,省略時 Excel 直接加總判斷欄本身,例如 =SUMIF(C2:C11,”>5000″) 只加總 C 欄大於 5000 的金額。判斷欄與加總欄是不同欄時,才需要寫第三個引數。

SUMIF 的條件什麼時候要加雙引號?

SUMIF 的文字條件,以及帶有大於、小於、等於這類比較符號的條件,都要整段放進雙引號,例如 “名片”、”>5000″;只有單純的數字可以不加引號。帶符號時是連數字一起包進引號,不是寫成 >”5000″。

SUMIF 怎麼加總名稱開頭相同的品項?

SUMIF 要比對開頭相同的品項,就在條件後面加萬用字元 *,例如 “型錄*” 會把型錄-A4、型錄-A5 都算進來。* 代表任意長度的字元,? 代表單一字元;要比對真正的星號或問號,前面加上 ~ 即可。

SUMIF 的條件怎麼引用儲存格?

SUMIF 的條件只有儲存格參照時直接放進去、不加引號;帶比較符號時,把符號放進引號再用 & 接上儲存格,例如 “>”&G1。把地址一起寫進引號變成 “>G1″,Excel 會把 G1 當成文字,結果就不對。

SUMIFS 和 SUMIF 的引數順序有什麼不同?

SUMIFS 的加總範圍排在第一個引數,之後每個條件都以條件範圍加條件成對出現;SUMIF 的加總範圍則是第三個引數。SUMIFS 的所有條件要同時成立,那一列才會被加總,最多可放 127 組範圍與準則。

SUMIFS 怎麼加總某段期間內的金額?

SUMIFS 要加總某段期間,同一個日期欄要放進兩次條件,一個是大於或等於起日,另一個是小於或等於迄日,兩個都成立的列才會被加總。SUMIF 只有一組條件,沒辦法對同一欄同時設定下限與上限。

SUMIFS 依月份加總時為什麼不能用 MONTH?

SUMIFS 的條件範圍必須是真正的儲存格範圍,放進 MONTH 運算出來的陣列,輸入時就會被 Excel 擋下。依月份加總要改用兩個條件,日期大於或等於當月 1 日,而且小於下個月 1 日,月底帶時間的紀錄也不會漏算。

SUMIFS 怎麼加總「名片或海報」的金額?

SUMIFS 的多個條件都是「而且」,「或」要另外處理。條件少時把兩個 SUMIFS 的結果相加最直白;條件多時改用陣列常數,寫成 =SUM(SUMIFS(C2:C11,B2:B11,{“名片”,”海報”})),在大括號裡多放幾個值即可。

SUMIF 公式沒報錯卻算出 0 是什麼原因?

SUMIF 算出 0 時,先檢查文字條件有沒有放進雙引號,再看金額或日期是不是被存成文字。整欄數字靠左對齊、儲存格左上角帶綠色小三角,通常就是文字格式,轉成數值後結果就會回到預期。

資料來源
  1. SUMIF 函數 — Microsoft
  2. SUMIFS 函數 — Microsoft
  3. 如何修正 SUMIF/SUMIFS 函數中的 #VALUE! 錯誤 — Microsoft