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

  • Post published:
  • 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 把工作變簡單

This Post Has One Comment

  1. vngemmomo

    I was hesitant to try new platforms but this one won me over with its clean interface and instant rewards. The daily bonuses keep me coming back and the team actually listens to player feedback. A refreshing spot in a crowded market that truly cares about its community. Play with me here vngemmomo

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