DATEDIF函數,是一個隐藏函數,你或許看到過這個函數,
這一章,我會要講到DATEDIF函數所有的用法,
其實有些實戰案例還是有一些難度的!
首先你可以保存一下這張圖片:
這張圖片,包含了這個函數所有的用法,
此函數的意義在于計算時間差,公式:
DATEDIF(開始時間,結束時間,模式)
如:
你想要計算開始時間和結束時間跨越的年份:
DATEDIF('2001/5/2','2022/6/14','Y')
結果為:21
如果你要計算開始時間和結束時間跨越的所有月份:
DATEDIF('2001/5/2','2022/6/14','M')
結果為:253
總天數差計算:
DATEDIF('2001/5/2','2022/6/14','D')
結果為:7713
在同月中計算日差計算:
DATEDIF('2001/5/2','2022/6/14','MD')
結果為:12
這個結果是直接忽略年份月份,計算日差值
年份内的月差值計算:
DATEDIF('2001/5/2','2022/6/14','YM')
結果為:1
這個結果是忽略年份和日,計算月差值
年份内的日差計算:
DATEDIF('2001/5/2','2022/6/14','YD')
結果為:43
這個結果是忽略年份和月份,計算日差值
如果你自己在做相關計算的時候,如果不确定你所需要的内容體現,你可以按照我這個方法,先制作一個圖譜,然後再根據需求進行挑選.
實戰案例
1.年齡計算
先用MID函數截取出生日期,然後用TEXT函數講起變成日期模式,最後使用DATEDIF函數來做年份的模式的計算:
可以直接複制套用此公式:
=DATEDIF(TEXT(MID(C2,7,8),'00-00-00'),TODAY(),'Y')
2.做生日提醒
下方是一些員工的生日,如何做一個生日提醒,并且是提前7天進行提醒,你可以使用到下面的公式:
=IF(DATEDIF(C2,TODAY(),'YD')<=7,TEXT(DATEDIF(C2,TODAY(),'YD'),'還有0天生日;;今天生日'),'')
公式解析:
DATEDIF(C2,TODAY(),'YD')這個計算結果是忽略年份月份的日差值.
如果這個值小于等于7,也就是在7天内進行提醒,
如果滿足為7天内,那麼:
TEXT(DATEDIF(C2,TODAY(),'YD'),'還有0天生日;;今天生日')
如果不加上TEXT函數,例如離今天還有5天過生日,那麼結果就是5.
但是加上TEXT函數之後,又可以再加一重文本判斷:
在自定義格式中,數值有3個位置:
正數;負數;零
那麼,下方這個格式:
還有0天生日;;今天生日
意思就是:當DATEDIF函數的數值為正數的時候例如:5天,則轉換為:
還有5天過生日.
不可能會存在負數,所以第二個位置可以不用寫,
當DATEDIF函數的數值結果為0,代表正好今天過生日,
那麼0的位置就會變成今天生日.
如果不滿足為7天内,則顯示空值.
3.算員工工齡/合同到期
以計算工齡為例:
這樣的工齡天數計算,我相信人人都會做把!
用截止日期減去今天,最後做一個條件格式:
員工1迄今為止在職406天,
當然,你也可以用這個計算值除以365
換算成在職年限,
這種做法不算精準
如果你的要求是要做成下面這個樣子,就必須要要用到DATEDIF函數了!
公式有點長,直接可以套用:
=TEXT(DATEDIF(C2,TODAY(),'Y'),'0年;;')&TEXT(DATEDIF(C2,TODAY(),'YM'),'0個月;;')&TEXT(DATEDIF(C2,TODAY(),'MD'),'0天;;')
解析:
分别計算出:
Y年份
YM忽略年和日的月差
MD忽略年和月的日差
如果你直接把這三個内容相連,可能會出現這樣的情況:
0年0月20天
很奇怪..
所以你需要用TEXT函數進行轉換
濃縮版:
=TEXT(Y年份,'0年;0;')&TEXT(YM忽略年和日的月差,'0個月;0;')&TEXT(MD忽略年和月的日差,'0天;0;')
同樣是TEXT的自定義功能用法:正數;負數;零
如:TEXT(Y年份,'0年;0;')
如果Y年份算出來是正數就是例如:1年
如果Y年份算出來不可能為負數,
如果Y年份算出來為0那麼則不顯示.
月份邏輯也是一樣的,最後的結果如果是0年2月12天
組合出來的結果就是:
2個月12天
大家最好去嘗試一下,看一遍如果模拟操作一遍.
以上
好多字...如果大家喜歡記得點贊哦!!
有話要說...