Google 試算表中的日期差距是指兩個日期之間以天數、月數或年數表示的間隔,你可以使用內建公式(例如 DATEDIF)、簡單的減法,或使用免費的日期差距計算機來取得,後者不需公式就能回傳相同的結果。當兩個儲存格已存放真實的日期值時,試算表會將每個日期視為一個序號,其中一天等於 1,因此用較晚的儲存格減去較早的儲存格即可得到以天數表示的原始間隔。若要取得更豐富的輸出,例如兩日期之間的週數、整潔的「年-月-日」分解,或略過週末的工作天數,專屬工具能讓你免於堆疊巢狀公式並追趕 #NUM! 錯誤。下方指南會逐步介紹試算表原生選項,接著示範如何在不輸入任何公式的情況下,以最快方式取得符合曆法的正確答案。

Google 試算表中什麼算作日期差距
在動手寫公式之前,先確切了解 Google 試算表能回報什麼會很有幫助。在內部,儲存格中的日期只是自 1899 年 12 月 31 日(也就是第 1 天)起的偏移量。往後每多一天就加 1,較早的日期則為負數,時間部分則位於小數點之後。由於日期本質上是數字,任意兩個有效日期儲存格之間的差距也是一個數字——但讀取時使用的單位,取決於你選擇的公式或格式。
試算表可以三種內建形式提供差距:總天數、總月數、總年數,加上幾個混合單位的變體。當兩個儲存格都只包含午夜時間值時,每一種形式都會忽略時間部分,且每種形式都遵循包括閏年在內的格里高利曆。需要注意的重點是:你要求的格式必須與你寫的公式相符。如果你只需要天數,使用減法即可。如果你需要特定的、符合曆法意識的單位,DATEDIF 就是 Google 為此工作從 Lotus 1-2-3 保留下來的函式。
逐步在 Google 試算表中計算日期差距
每種試算表方法所用的兩個儲存格設定都相同:將開始日期放在 A2 儲存格,結束日期放在 B2 儲存格,並確保兩者皆格式化為日期(格式 → 數字 → 日期)。一旦這些儲存格存放有效的日期,你就有幾種方式可以讀取差距。
- 使用簡單減法取得總天數。在空白儲存格中輸入 =B2-A2,並將結果格式化為數字。因為每個儲存格本質上代表自 1899 年以來的天數,試算表會回傳以天數表示的原始差距。如果儲存格顯示日期而非數字,請將格式變更為數字。
- 使用 DATEDIF 取得年、月或日。輸入 =DATEDIF(A2, B2, "Y") 取得完整年數,=DATEDIF(A2, B2, "M") 取得完整月數,或 =DATEDIF(A2, B2, "D") 取得總天數。此函式可辨識六種單位代碼:Y、M、D、MD、YM 與 YD,其中 MD 會回傳完整月份後的剩餘天數,YM 會回傳完整年數後的剩餘月數,YD 會回傳完整年數後的剩餘天數。
- 建立「年-月-日」分解。將三個 DATEDIF 儲存格組合起來:=CONCATENATE(DATEDIF(A2,B2,"Y")," 年, ",DATEDIF(A2,B2,"YM")," 個月, ",DATEDIF(A2,B2,"MD")," 天")。這是計算機分解面板的公式等效版本,讀起來就像人們實際描述時間長度的方式。
- 使用 NETWORKDAYS 計算工作天數。若要計算週一至週五的天數,請輸入 =NETWORKDAYS(A2, B2)。試算表會回傳工作天數,自動排除週六與週日。如果你的工作週從不同的日子開始,或需要非標準的週末遮罩,請使用 NETWORKDAYS.INTL。
有兩個地方經常讓人卡住。第一,當開始日期晚於結束日期時,DATEDIF 會回傳 #NUM!,因此請務必將較早的日期放在前面。第二,所有這些公式都會在你編輯日期時重新計算——沒有快取,也沒有可設定的捨入模式。如果你只需要一次性答案,或一直卡在單位代碼上,下方的計算機可以省去這些步驟。
不寫公式也能取得相同答案
日期差距計算機涵蓋了上述公式的相同功能,卻不需要寫公式。沒有要格式化的儲存格,沒有要記住的單位代碼,也沒有要清理的結果欄位。當你選擇日期時,所有內容都會即時更新,因此你可以嘗試不同的結束日期,並即時觀察天數、週數、月數以及「年-月-日」分解的變化。
- 在第一個欄位中選擇開始日期。它預設為今天,因此在大部分情況下你可以保持原樣,只需調整第二個欄位即可。
- 在第二個欄位中選擇結束日期。總天數、週數、完整月數以及「年-月-日」分解會直接出現在輸入欄位下方——沒有需要按下的「計算」按鈕。
- 讀取結果。總天數數字代表兩日期之間的曆法差距。週數的計算是將總天數除以七再向下捨去,而「年-月-日」分解會先填入完整的年數,接著填入完整的月數,最後填入剩餘天數,其運作方式與 date-fns 的 intervalToDuration 相同。勾選「僅工作日」核取方塊即可將總計切換為工作日與週末日的分別統計。
所有運算都在你的瀏覽器中執行,因此你輸入的日期從不離開你的裝置,也不會被上傳、儲存或傳送至任何地方。沒有註冊流程,也沒有計算次數限制,這讓你能輕鬆測試幾個「假設」結束日期後再選定最合適的答案。
讀取天數、週數、月數與「年-月-日」分解
計算機中的每個結果都有不同的用途,了解該讀取哪個數字能幫助你避免誤判。總天數數字代表兩日期之間的曆法差距,這表示它已經將期間內每個月的長度以及任何落在該區間的 2 月 29 日納入計算。2020 年 1 月 1 日至 2020 年 3 月 1 日為 60 天,因為 2020 年是閏年,當年的 2 月有 29 天;而相同的起訖日期在 2021 年則為 59 天,因為 2 月只有 28 天。
週數僅以完整週數顯示——即將總天數除以七並向下捨去。60 天的差距會顯示為 8 週又剩餘 4 天(60 ÷ 7 = 8 餘 4),而這些剩餘天數仍屬於總天數的一部分,因此你不會遺失任何資訊。月數的計算方式相同:只計算完整的月數,並採用與「為日期加上月數」相同的月底鉗制(clamping),這表示差一天就滿一個月的區間不會被進位。
「年-月-日」分解正是讀起來像人們實際說話方式的部分。計算機不會要求你動手算數,而是先填入完整的年數,接著填入完整的月數,最後填入剩餘天數,並在每一步向前推進起始錨點。這能避免在月底與閏日附近因直接相減而產生的常見 off-by-one 誤差。各部分加總後必定恰好等於結束日期:若分解顯示「1 年 2 個月又 5 天」,將這個區間加回開始日期,會精準落在結束日期上。選擇相同的日期兩次回傳零,交換開始與結束日期也絕不會產生負數——計算機無論如何都會測量差距,並給你一個乾淨的正數答案。
僅工作日模式與工作天數計算
總曆法天數適用於旅程長度與訂閱期限。對於專案截止日期、試用期與通知期,你通常會需要工作天數,也就是計算週一至週五並排除週六與週日。計算機中的「僅工作日」切換開關會將區間拆分為兩個數字:工作天數與週末天數。這兩個數字加總必定等於總天數,因此你可以一眼交叉驗證,且無需重新輸入日期即可開關切換。
有一個重要的限制必須了解:這是一般性的工作日計算。它不會扣除國定假日,也不會辨識各地區的曆法,因此橫跨聖誕節的區間仍會將 12 月 25 日計為工作日。若要進行考量假日的精確工作日計算——例如美國聯邦假日、英國銀行假日或自訂的公司曆——請使用專屬的工作天數計算機,它能讓你選擇假日組或列出特定要排除的日期。
在 Google 試算表中,僅工作日模式的等效函式是 NETWORKDAYS,它會回傳兩日期之間的完整工作天數,並接受選填的假日清單。NETWORKDAYS.INTL 則新增了週末遮罩,讓你能定義任意兩天的週末,而不僅限於週六與週日。兩者都易於編寫,但如同 DATEDIF,它們要求開始日期在前;交換順序就會出現 #NUM! 錯誤,這也是許多讀者偏好使用會自動校正順序的工具的另一個原因。
試算表公式還是計算機?選擇正確的方法
當你需要儲存格中持續更新的即時數字時,試算表公式是合適的工具——例如,始終顯示今天與目標上線日期之間當前差距的專案儀表板,或是需要自動計算每張發票帳齡的薪資表。儲存格會自動更新,公式在複製貼上後依然有效,也不需要保持瀏覽器分頁開啟。對於一次性答案、交叉檢查或快速決策,計算機能省去拖慢你速度的部分。
| 使用情境 | 最佳方法 | 原因 |
|---|---|---|
| 單一問題的一次性答案 | 日期差距計算機 | 不需寫公式,結果即時更新 |
| 含有累計總計的即時儀表板 | 儲存格中的 =B2-A2 或 DATEDIF | 當來源日期變更時自動更新 |
| 含國定假日的工作天數計算 | 工作天數計算機 | 考量假日的工具,適用於官方曆法 |
| 截止日期落在星期幾 | 星期幾查詢指南 | 無需開啟試算表即可快速查詢 |
| 為單一日期加上 30 天 | DATE 函式或日期加法工具 | 這是與差距量測不同的運算 |
你還能避免不小心交換開始與結束日期的陷阱:計算機無論如何都會測量差距,絕不會回傳負數,因此你始終會得到一個乾淨的正數答案。另一個低調的優勢是它處理月底鉗制與 2 月 29 日的方式:分解採用符合曆法的正確鉗制,而非粗糙的除法運算,這與 date-fns intervalToDuration 採用的方法相同,因此跨越閏日的區間會比非閏年多出一天。