【Excel Date】DATEDIF:計算兩個日期之間的差

  • Post author:
Home » 莫非工具 » Excel » 【Excel Date】DATEDIF:計算兩個日期之間的差

在計算兩個日期間的差,會使用到 DATEDIF,函數有提供多種不同的參數來呈現不同條件下的日期差:差幾年、差幾月、差幾日……等等。同時介紹如何使用 DATEDIF 來呈現累計之年、月、日之用法。


Excel 範例檔案下載:Excel-DATEDIF.xlsx


DATEDIF

該函數的組成是由 date + difference,被寫成 DATEDIF

為了方便記憶與理解,下方第三個參數所使用的「”y”」,可以簡單理解成:完整的年
而兩個字母的參數「”ym”」,理解成:扣除完整的年,剩下時間中的完整的月

=DATEDIF(a, b, c)
a:起始日期
b:結束日期
c:回傳的資訊類型

❗警告: 不建議使用 "md" 引數,因為它可能會計算出負數零值不正確的結果。這塊
會在下方「參數 "md" 的已知問題」中說明。

兩個日期相差多久

相差幾年

這是使用「”y”」可以取得兩個日期相差幾個完整的一整年

=DATEDIF(A2,B2,"y")

相差幾月

這是使用「”m”」可以取得兩個日期相差幾個完整的一個月

=DATEDIF(A2,B2,"m")

相差幾週

直接使用「”d”」取得相差共幾日,在直接除於 7 來計算

=DATEDIF(A2,B2,"d")/7

相差幾日

使用「”d”」可以取得兩個日期相差共幾日

=DATEDIF(A2,B2,"d")

參數 “md” 的已知問題

下方舉出 3 種使用 DATEDIF 搭配 “md” 會出現問題的案例:

DATEDIF 在跨月、二月至三月會產生問題


以累計之年、月、日計算

可以想像成某人的年齡「27 歲 10 個月又 5 天」,或者服務時間「20 年 2 個月,又 5 天」

這邊我以 NBA 三位球星 Dirk Nowitzki、Kobe Bryant、Tim Duncan 效力於同一隊的時長說明

=DATEDIF(D2,D3,"y")
=DATEDIF(D2,D3,"ym")
=IF(DAY(D3)>=DAY(D2),DAY(D3)-DAY(D2),EOMONTH(D2,0)-D2+DAY(D3))
  1. 使用 DATEDIF 得到經過幾個完整的年
    • DATEDIF 中「”y”」會回傳兩個日前之間完整年數
  2. DATEDIF 搭配 “ym” 來尋找月份
    • DATEDIF 中「”ym”」會回傳最後一個不完整年之中,所經過的完整月數
  3. 日的部分,因為使用「”md” 」於跨月時,會出現問題(第 7 列),這裡我用 IF 來判斷跨月與否
    • 沒跨月:直接「日」相減
    • 有跨月:當月剩幾天 + 隔月日數(第 6 列)
函數 EOMONTH() 的使用方法:【Excel Date】第一天、最後一天:簡單的方法取得當年、月、週的起始、結束日
函數 IF() 的使用方法:【Excel Function】IF、IFS、SWITCH 條件判斷,搭配使用 AND、OR、NOT

最後可以整合起來

="共 "&DATEDIF(D2,D3,"y")&" 年 "
&DATEDIF(D2,D3,"ym")&" 個月又 "
&IF(DAY(D3)>=DAY(D2),DAY(D3)-DAY(D2),EOMONTH(D2,0)-D2+DAY(D3))&" 天"

Excel 範例檔案下載:Excel-DATEDIF.xlsx


更多 Excel 文章請至 文章導覽 尋找,也可利用上方「搜尋(Search...)」功能
有任何莫非工具的問題,歡迎至「表單」提問

Excel 是不是很容易
和墨菲一起用 Excel 把工作變簡單

歡迎留言,與我們分享你的看法!