HI,大家好,我是星光,今天咱們來聊一下日期計算必會函數DATEDIF。
DATEDIF是Excel的隱藏函數。只所以說它是隱藏函數,是因為咱們在工作表中輸入這個函數看不到任何提示信息,函數列表裡沒有它,幫助文件裡也沒有它,就好像這傢伙壓根不存在一樣。但這傢伙不但真實存在,還很實用;在工作中的應用非常廣泛,常用於計算兩個日期各種類型的差。
本章概要如下▼
1,基礎語法和用法。
2,經典案例:以年、年月、年月日為單位計算工齡。
3,小技巧:如何快速記憶第3參數。
基本語法
注意開始日期在前,結束日期在後,結束日期不能大於開始日期。重點說一下它的第3參數。它代表了日期信息返回的型,不區分大小寫,不同的參數作用下表所示。案例丨計算工齡
=DATEDIF(B2,C2,"y")&"年"& DATEDIF(B2,C2,"ym")&"月"
3,F列將工齡精確到天,也就是幾年幾月幾天。
幾天需要忽視掉年和月,咱們可以用公式:=DATEDIF(B2,C2,"y")&"年"&DATEDIF(B2,C2,"ym")&"月"& DATEDIF(B2,C2,"md")&"天
但這樣的操作是不是太樸素了?咱能不能有點追求?有點夢想?娶個女神嫁個富三代?——不是,咱能不能把公式精簡下,高級點?=TEXT(SUM(DATEDIF(B2,C2,{"y","ym","md"})*{10000,100,1}),"00年00月00日")
公式解析▼:
DATEDIF(B2,C2,{"y","ym","md"}),這部分計算兩個日期的年、月、日差值,結果是一個內存數組:{13,11,7}
然後用這個內存數組乘以{10000,100,1},也就是{13,11,7}*{10000,100,1}),其中13*10000,11*100,7*1。這一步的意義是對不同的值進行加權,以兩位數進行間隔,分隔到不同位置。
最後使用SUM函數對乘積結果求和,得到131107。其中前兩位是年。中間兩位是月。最後兩位是日。
最外圍的TEXT函數第3參數為:"00年00月00日",也就是對SUM函數返回的結果每兩位分一個主人,前兩位分給年,中間兩位分給月,最後兩位分給日……
是不是很有意思?如何快速記憶第3參數
最後呢,再給大家講一個小秘密。
有女朋友說了,DATEDIF的第3參數也太亂了。一會YM,一會MD,一會又YD的,這誰整的明白啊?
打個響指,聽我說。最後一個字母是要計算的目標,第1個字母是計算目標的忽視範圍內的上一級。
比如YM,目標是整月,忽視日和年。M是month的首字母,也就是月的意思,月的上一級是年year,Y是year的首字母。
比如MD,目標是天,忽視月和年。D是day的首字母,也就是日的意思,日的上一級是月,也就是M。
有朋友就說了,瞎扯,YD就不符合這規則——其實是符合的。YD的意思是忽視年,計算天數。計算目標是D。D的上一級應該是月,但是,由於月並不在忽視的範圍內,所以D的上一級當然是Y……
信不信由你,反正我信了。
……
……
友情提示,DATEDIF是一個天生攜帶BUG的函數,在計算日期臨近月底最後一天時,可能會導致計算出錯。通常這是可以接受的,但如果計算數據要求特別嚴格,這當然也是不可以接受的。請視情況選擇是否使用該函數。
關於bug的討論,參考論壇經典帖子▼
http://club.excelhome.net/thread-463826-1-1.html
文件下載百度網盤..▼
https://pan.baidu.com/s/1moWK1c7RB-dp6Yp6eDHB0A
提取碼: fkvq♥♥溫馨小提示▼
公眾號每天會發布1篇函數教程+1篇編程教程+1個技巧小視頻,如果你沒有收到我的更新,是由於微信按算法顯示公眾號而不是實際更新時間——這時就需要如下圖所示星標我一下啦,撒花✿
右下角↘你懂得~