先說清楚要加總的是什麼
本例要算的是下單時間在 2026 年 10 月,且資料表中的狀態為「已付款」的訂單金額。不是 10 月收款額,也不是扣除退款後的淨營收。資料沒有付款日期,所以不能靠換一個公式回答收款月份的問題。
Microsoft 的 SUMIFS 文件說明,此函數會加總同時符合多組條件的數值,且條件範圍與加總範圍必須大小一致。下面把這個規則用在一個小型教材中,重點是驗收 AI 提出的公式,而非比較哪個模型較強。
把 8 筆資料放進空白工作表
先看下表,辨認哪些資料本來就不應算進去。四筆有效訂單是 T02、T03、T04、T05,預期合計為 200 + 300 + 400 + 500 = 1,400。
| 訂單 | 下單時間 | 狀態 | 金額 | 預期判斷 |
|---|---|---|---|---|
| T01 | 2026-09-30 23:59 | 已付款 | 100 | 前一個月,不納入 |
| T02 | 2026-10-01 00:00 | 已付款 | 200 | 月初邊界,納入 |
| T03 | 2026-10-15 12:00 | 已付款 | 300 | 月中,納入 |
| T04 | 2026-10-31 00:00 | 已付款 | 400 | 月底午夜,納入 |
| T05 | 2026-10-31 18:30 | 已付款 | 500 | 月底傍晚,仍應納入 |
| T06 | 2026-11-01 00:00 | 已付款 | 600 | 下一個月,不納入 |
| T07 | 2026-10-20 09:00 | 未付款 | 700 | 狀態不符,不納入 |
| T08 | 2026-10-25 10:00 | 已退款 | 800 | 狀態不符,不納入 |
在空白 Excel 工作表選取 A1,貼上下方整段資料。欄位以 Tab 分隔;B 欄用 DATE 與 TIME 組合,避免把外觀像日期的文字直接拿來比較。若整段落在同一欄,先用記事本中轉純文字,再以 Tab 分欄。不要覆蓋現有工作表。
訂單編號 下單時間 狀態 金額
T01 =DATE(2026,9,30)+TIME(23,59,0) 已付款 100
T02 =DATE(2026,10,1)+TIME(0,0,0) 已付款 200
T03 =DATE(2026,10,15)+TIME(12,0,0) 已付款 300
T04 =DATE(2026,10,31)+TIME(0,0,0) 已付款 400
T05 =DATE(2026,10,31)+TIME(18,30,0) 已付款 500
T06 =DATE(2026,11,1)+TIME(0,0,0) 已付款 600
T07 =DATE(2026,10,20)+TIME(9,0,0) 未付款 700
T08 =DATE(2026,10,25)+TIME(10,0,0) 已退款 800貼上後應占 A1:D9。將 B2:B9 顯示格式設為 yyyy-mm-dd hh:mm,確認 T05 顯示 2026-10-31 18:30。如果看到日期序號,先調整顯示格式;如果儲存格直接顯示等號和公式文字,確認不是文字格式,再重新輸入公式。地區設定若使用分號分隔函數參數,需把範例函數中的逗號改為分號。
可在空白儲存格分別輸入 =COUNT(B2:B9) 與 =COUNT(D2:D9),兩者都應為 8。這只能檢查數值筆數,還要逐筆確認時間與金額符合上表。
下載純文字練習資料與核對答案。檔案只含本文教材,不含巨集或外部連線;下載後以文字編輯器開啟,再複製標示的資料區。
錯誤公式為什麼會得到 900
把下列刻意編寫的錯誤示例放在 F2。它不是某個 AI 產品的實際回答紀錄。
=SUMIFS($D$2:$D$9,$B$2:$B$9,">="&DATE(2026,10,1),$B$2:$B$9,"<="&DATE(2026,10,31),$C$2:$C$9,"已付款")問題在 "<="&DATE(2026,10,31)。DATE 回傳日期序號;TIME 回傳一天中的小數部分。因此,10 月 31 日 18:30 比同一天 00:00 的數值大,不能通過「小於或等於 10 月 31 日午夜」的條件。
T04 的時間正好是午夜,會被納入;T05 在傍晚,會被排除。剩下 T02、T03、T04,合計就是 900。公式可能完全不報錯,卻漏算了 500。若你手邊測試資料剛好都沒有時間部分,這個缺陷便不容易被發現。
改成包含月初 排除下個月月初
把 F2 換成下列公式。金額範圍位於第一個參數,後面依序限制起點、終點和狀態,所有範圍均為第 2 至第 9 列。
=SUMIFS($D$2:$D$9,$B$2:$B$9,">="&DATE(2026,10,1),$B$2:$B$9,"<"&DATE(2026,11,1),$C$2:$C$9,"已付款")>=DATE(2026,10,1) 包含 10 月 1 日午夜;<DATE(2026,11,1) 排除 11 月 1 日午夜。這樣 10 月 31 日的傍晚也在範圍內,不必猜最後一秒或截去原始時間。最後一組條件只接受「已付款」。
依照這份資料,結果應為 1,400。若出現其他數字,先核對 T02 至 T05 的值、範圍及狀態文字。不要只要求 AI 再給一個不同公式,因為輸入資料的型態可能才是原因。
這是一種區間設計方法:包含起點,排除下一段起點。換成其他月份時,起點與終點必須一起換;跨年時也要使用正確年份。
給 AI 的提示詞也要包含驗收條件
「幫我算 10 月業績」省略了時間欄位、狀態定義與範圍。先把這些資訊寫入提示詞,才有辦法判斷回答是否完成任務。
請替下面的虛構練習資料寫一個 Excel SUMIFS 公式。
A1:D9 有標題與 8 筆資料:A 訂單編號、B 下單時間、C 狀態、D 金額。
B 欄是數值日期時間,不是文字;D 欄是數值。各欄均無空白或錯誤值。
統計口徑:下單時間在 2026 年 10 月、狀態完全符合「已付款」的金額。
起點包含 10 月 1 日 00:00,終點排除 11 月 1 日 00:00。
所有時間已採同一時區;不要自行轉換時區或去除重複訂單。
使用英文函數名稱與逗號分隔,公式放在 F2。
請回答:1.公式;2.每一組條件的意思;3.哪些訂單納入及合計;
4.月底 18:30 的訂單是否納入;5.新增第 10 列時要改哪些範圍。
如果沒有實際執行 Excel,請標示為推算,不要宣稱已測試。
以下貼上本文章的 8 筆練習資料:貼上第二節的資料後,要求 AI 列出納入的訂單編號,再與本文的 T02、T03、T04、T05 對照。AI 自己列出的合計仍是待驗證的答案;不能只因它說「已核對」便接受。
實際工作時只提供必要欄位,先換掉客戶姓名、電話及其他識別資訊。資料準備可搭配CSV 上傳前檢查流程;要保存多次回答與差異,可使用任務測試紀錄表。
每次只改一筆 看結果是否跟著改
初始答案相同還不夠。下面三個變動分開測試,每次都先還原成原始 8 筆資料,再做下一項,以免把變動累加在一起。
| 單次變動 | 正確公式的預期結果 | 驗收目的 |
|---|---|---|
| T05 改為 11 月 1 日 00:00 | 900 | 下一個月的起點確實被排除 |
| T07 狀態改為已付款 | 2,100 | 狀態條件確實影響計算 |
| T01 改為 10 月 1 日 00:00 | 1,500 | 本月起點確實被包含 |
再試著於第 10 列新增一筆 10 月已付款、金額 50 的訂單。原公式範圍只到第 9 列,預期仍是 1,400;將金額、兩組時間條件及狀態範圍都延伸至第 10 列後,才應得到 1,450。這是範圍維護問題,不是模型是否理解日期的問題。
驗收時記錄你使用的 Excel 版本、公式原文、資料版本與實際結果。出現差異要先找到是哪一筆造成,而不是直接採用看起來比較合理的總額。
哪些情況不能直接套用
- 時間仍是文字:畫面顯示成日期不保證儲存的是日期數值。先確認資料型態,再做月份判斷。
- 不同時區混在一起:本例假設所有時間已採同一時區,公式本身沒有時區轉換。先決定以哪個時區劃分月份。
- 退款另有一張明細:本例只排除狀態為已退款的整筆訂單,沒有處理部分退款、跨月退款或沖銷。不能把 1,400 解讀成真實淨營收。
- 資料有重複訂單:SUMIFS 不會替你決定是否去重。相同編號可能是匯入重複,也可能是不同品項,先確認資料粒度。
- 狀態或金額不乾淨:狀態前後空白、金額為文字或錯誤值,都需要先處理;本教材沒有涵蓋這些輸入。
這份練習的驗收成果是一組小而清楚的判準:原始資料合計 1,400,錯誤月底條件合計 900,差額能定位到 T05;獨立改動資料時,結果也能按規則變化。把這種檢查方式用在下一條 AI 公式,比只看它有沒有報錯更有用。