在 Excel 中處理合約週期、付款排程或報表預測時,常需要根據某個起始日期向前或向後推算指定月數的日期。EDATE 函數能根據起始日期與月數,回傳對應的結果日期,支援正負月數並保留原日期的「日」部分,是財務與行政報表中常用的日期運算工具。
🔹快速摘要(語法、用途、常見場景)
- 用途:根據起始日期與月數推算新日期
- 語法:
=EDATE(起始日期, 月數) - 常見場景:到期日計算、合約週期、付款排程、報表預測、日期欄位自動化
一、EDATE 函數語法與用途
語法說明:
=EDATE(start_date, months)
- start_date:起始日期,可為儲存格、日期函數或文字型日期
- months:要推算的月數(正值為未來,負值為過去)
- 回傳結果為新的日期,保留原「日」部分
=EDATE("2025/10/28",3) 回傳 2026/01/28。二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:向後推算 3 個月
=EDATE("2025/10/28",3)
回傳 2026/01/28。
範例二:向前推算 6 個月
=EDATE("2025/10/28",-6)
回傳 2025/04/28。
範例三:處理儲存格中的日期
=EDATE(A1,12)
將 A1 中的日期往後推算一年。
範例四:搭配 TODAY 計算未來日期
=EDATE(TODAY(),1)
回傳下個月的今天。
範例五:處理文字型日期
=EDATE(DATEVALUE("2025/10/01"),2)
回傳 2025/12/01。
🔸進階範例
範例六:搭配 TEXT 格式化輸出
=TEXT(EDATE(A1,3),"yyyy-mm-dd")
回傳格式化後的日期。
範例七:搭配 IF 判斷是否已到期
=IF(EDATE(A1,6)<TODAY(),"已到期","未到期")
判斷是否超過 6 個月。
範例八:批次推算整欄日期(Excel 365)
=MAP(A2:A100, LAMBDA(x, EDATE(x,3)))
將 A2:A100 中每列日期往後推算 3 個月。
範例九:建立付款排程欄位
=EDATE(A1,ROW(A2)-1)
根據列數建立每月付款日期。
範例十:搭配 DATEDIF 計算月差
=DATEDIF(A1,EDATE(A1,6),"m")
回傳兩日期間的月數(應為 6)。
三、常見問題解答(FAQ)
Q1:EDATE 可以處理時間嗎?
不行,僅處理日期部分,時間會被忽略。
Q2:EDATE 可以處理文字型日期嗎?
可以,但建議搭配 DATEVALUE 確保格式正確。
Q3:EDATE 可以處理整欄資料嗎?
可以,搭配 MAP 或拖曳填滿即可批次處理。
Q4:EDATE 可以搭配哪些函數使用?
常見搭配 TODAY、DATEVALUE、TEXT、IF、MAP、LAMBDA 等。
Q5:EDATE 回傳的是什麼格式?
回傳 Excel 的日期值,可直接顯示或進行加減運算。
四、注意事項與錯誤排除
- 若輸入非有效日期,會回傳
#VALUE! - 若輸入為空白儲存格,回傳錯誤或空白
- EDATE 保留原日期的「日」部分,若結果月份無該日,則回傳該月最後一天
- 適用於合約週期、付款排程與報表預測等場景
- 建議搭配錯誤防呆邏輯處理格式異常輸入
五、延伸技巧與相關函數
1. TODAY 函數 與 EDATE 的連動應用:可用 TODAY 作為起始日期,例如 EDATE(TODAY(),3)。
2. DATEVALUE 函數 與 EDATE 的連動應用:可處理匯入資料,例如 EDATE(DATEVALUE(A1),6)。
3. TEXT 函數 與 EDATE 的連動應用:可格式化輸出結果,例如 TEXT(EDATE(A1,3),"yyyy-mm-dd")。
4. IF 函數 與 EDATE 的連動應用:可判斷是否到期或建立分類,例如 IF(EDATE(A1,6)<TODAY(),"到期","未到期")。
5. MAP / LAMBDA 函數 與 EDATE 的連動應用:可批次推算整欄日期,例如 MAP(A2:A100, LAMBDA(x, EDATE(x,3)))。
這些函數能與 EDATE 組合成一套完整的「日期推算 → 格式控制 → 到期判斷 → 批次處理」流程,適用於報表設計、合約管理與付款排程等場景。
六、結語與延伸閱讀推薦
EDATE 函數是 Excel 中專門處理日期推算的動態工具,適合用在合約週期、付款排程、報表預測與欄位標準化等情境。學會 EDATE 後,你可以進一步探索:
- [DATEVALUE 函數教學]:處理匯入資料中的文字型日期
- [TODAY 函數教學]:取得當日日期並進行推算
- [MAP 函數教學]:批次處理與格式比對的動態技巧



















