Excel 會使用 NETWORKDAYS 函數計算兩個日期之間的工作日,該函數會自動跳過週六和週日,並回傳包含起始與結束日期在內的完整工作天數(整數)。基本語法為 =NETWORKDAYS(start_date, end_date),你可以將其延伸為第三個參數,列出假日(以日期儲存格引用或日期值陣列表示)。若要排除國定假日,可加入範圍,例如 =NETWORKDAYS(A1, A2, B1:B10),其中 B1:B10 為你的假日清單。針對非標準週末,Excel 提供 NETWORKDAYS.INTL,帶有週末遮罩參數,可讓你定義一週中哪些天為休息日。兩個函數都會回傳簡單的整數,可直接貼入發票、專案計畫、薪資計算與出貨預估中。
試算表方便好用,但也有可預測的失敗方式:日期輸入的打字錯誤、美式與歐式系統中月日格式顛倒,以及在週五至週六週末的國家中使用錯誤的週末遮罩。許多使用者也會忘記 NETWORKDAYS 會將起訖兩日都計入,若你思考的是「兩日之間」而非「跨越的天數」,結果可能多出一。本指南將逐步說明公式、常見陷阱,以及當你立即需要正確數字時的捷徑。

NETWORKDAYS 實際上計算什麼
NETWORKDAYS 函數(簡稱「network working days」)會回傳兩個日期之間的完整工作天數,並扣除週末。根據定義,它假設一週工作日為週一至週五,週末為週六、週日,這與全球最常見的辦公室作息一致。回傳結果一律為整數,當起始日期晚於結束日期時,會出現負數。
如果你的工作週較特殊,NETWORKDAYS.INTL 接受週末遮罩,可讓你指定任意連續兩天為休息日。第三個參數是字串或數字,例如「0000011」表示週五與週六為週末。這就是該公式能配合以色列、沙烏地阿拉伯與阿拉伯聯合大公國等國工作行事曆的方式。
逐步建立 NETWORKDAYS 公式
若要計算兩個日期之間的工作天數,請將起始日期放在 A1 儲存格,結束日期放在 B1 儲存格。在任一空白儲存格中輸入:
=NETWORKDAYS(A1, B1)
按下 Enter。該儲存格會顯示該範圍內的工作天數,若起訖兩日落在工作日,會將兩端點都計為完整的工作天。若要加入假日清單,請將假日日期放在 C1 到 C5 儲存格中,並將公式延伸為:
=NETWORKDAYS(A1, B1, C1:C5)
落在週末的假日會自動忽略,因此你不需要事先篩選它們。最終結果會排除 C 範圍中出現的任何日期。
在 Excel 中計算工作日:完整流程
- 開啟你的活頁簿,找出存放起始日期與結束日期的儲存格;本例使用 A1 作為起始日期,B1 作為結束日期。
- 確認兩個儲存格的格式皆為日期(在儲存格上按右鍵,選擇「儲存格格式」,然後選取日期類別),讓 Excel 將其解讀為實際日期而非文字字串。
- 點選一個空白儲存格作為結果顯示位置,例如 C1。
- 輸入 =NETWORKDAYS(A1, B1) 進行基本的工作日計算,採用週六至週日為週末。
- 按下 Enter。該儲存格會顯示一個整數,例如 21 或 44,視你的日期範圍而定。
- 若有假日需要排除,請將每個國定假日分別列於不同儲存格(例如 D1:D10),並將公式延伸為 =NETWORKDAYS(A1, B1, D1:D10)。
- 若為非標準的週末模式,請改用 =NETWORKDAYS.INTL(A1, B1, "0000011"),其中該字串表示週五與週六為週末。
- 將公式向下複製到整欄,即可將相同邏輯套用至多列日期配對。
常見陷阱與避免方法
第一個陷阱是包含端點。由於 NETWORKDAYS 將兩個端點都視為完整工作日,因此週一至週五的範圍會回傳 5,而非 4。若你的合約寫明「交貨後 21 個工作天」,請將交貨後的次日設為起始日期,避免交貨當天被重複計算。
第二個陷阱是偽裝成數字的日期文字。從 CSV 檔匯入日期時,有時會以文字字串形式進入,NETWORKDAYS 會回傳 #VALUE! 錯誤。請將有問題的輸入用 DATEVALUE 包起來,或直接手動重新輸入日期。先將儲存格格式化為日期再貼上,通常也能解決此問題。
第三,假日的值必須是真正的日期,不能是文字標籤。如果你在格式為「通用格式」的儲存格中輸入「2025-12-25」,Excel 會將其視為一段文字,並在 NETWORKDAYS 的假日參數中忽略它。請先將假日清單格式化為日期,再建立公式。
最後,請記得 NETWORKDAYS 為了完整性會進位:即使第一天或最後一天只有部分時間,也會計為一天。若你處理的是需要小時精度的工時表,請改用自訂公式或支援時長計算的時間長度計算機。
NETWORKDAYS vs NETWORKDAYS.INTL:各自的適用情境
兩個函數結構相同,但在定義週末的方式上有所不同。當你的團隊、客戶或供應商採用非西方行事曆時,選擇正確的函數就很重要。
| 情境 | 建議使用的函數 | 額外參數 |
|---|---|---|
| 美、英、歐盟或澳洲的標準週一至週五辦公室 | NETWORKDAYS | 不需要 |
| 中東團隊,週末為週五至週六 | NETWORKDAYS.INTL | "0000011" 或 7 |
| 尼泊爾或伊朗,每週只有一天休息 | NETWORKDAYS.INTL | "1000000" 或 11 |
| 除了週末外,還需排除國定假日 | 任一函數皆可 | 將假日範圍作為第三個參數附加 |
| 美國聯邦假日對應到特定工作日 | 任一函數皆可 | 以日期引用列出,例如 C1:C11 |
計算截止日期之後已過的工作天數
有時候問題會反過來:自某個歷史時間點以來,已過了多少個工作天?Excel 對此處理得很從容。若起始日期在過去、結束日期在未來或當下,NETWORKDAYS 仍會回傳正整數,代表介於兩者之間的工作天數。對於「自某日起至今」這類有一端日期固定的計算,這比將兩個日期儲存格相減後再除以七還要快。
你也可以使用 =NETWORKDAYS(A1, TODAY()) 維持一個滾動計數:隨著活頁簿每天重新計算,該儲存格會更新為最新的累計數字。再結合條件式格式,就能標記出已超過 30 天付款門檻的發票。
在瀏覽器中執行相同的計算
若你不想建立工作表、調整欄位格式,也不想記住哪個遮罩字串對應週五至週六,最快的做法就是使用工作天數計算機。開啟工具後,選取你的起始與結束日期,工作天數、總天數與週末天數就會立即更新,無需按下任何按鈕。如果你希望從工作天總數中扣除特定的國定假日,也可以貼上以 YYYY-MM-DD 格式表示、以逗號分隔的假日清單。
在只需要單次檢查、設定 Excel 工作表顯得多餘的情境下,這特別實用,例如單一發票的到期日、短跑期的衝刺、專案移交窗口或供應商上線截止日。由於結果是在瀏覽器中運算,不會上傳任何資料,你可以安心貼上敏感日期,無須擔心合規問題。對於涉及多組日期配對或重複範圍的較複雜情境,你仍可能偏好使用 Excel,以便保存歷史結果。
用於規劃與計價的工作天數計算
專案經理仰賴工作天數來進行衝刺規模估算、里程碑追蹤與資源配置。以工作天計算的兩週衝刺通常為十個工作天(已扣除假日),這也是團隊追蹤產能而非經過的日曆天數的原因。計價與合約團隊在服務水準協議上也會用類似計算,因為逾期一個工作天可能就會觸發罰款或抵扣。
若需要更深入的規劃,可將工作天數與日期差異計算機搭配使用,在同一檢視中比較工作天數與總經過天數。如果你需要以 N 個工作天向前推進(而不是計算兩個日期之間的天數),相關的如何計算兩個日期之間的工作天數教學會詳細介紹 WORKDAY 函數。
報出數字前的驗證清單
- 確認兩個日期儲存格顯示為日期,而非數字序數。
- 確認工作週符合你的所在地(週六至週日 vs 週五至週六)。
- 確認假日已放入第三個參數,且格式化為日期。
- 確認你的特定用途採用的是包含端點還是不包含端點的慣例。
- 確認假日範圍內沒有隱藏的空白儲存格,因為 Excel 會將空白視為零(1900)。
逐項檢查過後,你的 NETWORKDAYS 輸出即可信賴地用於請款、薪資、SLA 追蹤與大多數一般專案規劃。對於臨時性的提問,或當對方期待直接得到一個數字而不想開啟試算表時,工作天數計算機一鍵就能給你已驗證的工作天數。
延伸閱讀:如何計算減重的熱量赤字。