在提到日期計(jì)算時(shí),幾乎所有的Excel圖書中都會(huì)提到一個(gè)隱藏函數(shù)——DATEDIF。
這個(gè)函數(shù)的確挺好用,但令人奇怪的是,這居然是個(gè)隱藏函數(shù),你甚至在Excel的幫助信息里也找不到它。
這個(gè)函數(shù)是用來(lái)計(jì)算兩個(gè)日期之間的間隔時(shí)間的,它的語(yǔ)法是:
DATEDIF(start_date,end_date,unit)
翻譯成普通話就是:
DATEDIF(開始日期,結(jié)束日期,返回參數(shù))
第三參數(shù)有Y、M、D、YM、YD、MD六種,返回的內(nèi)容大致如下圖所示。
特別注意,第二個(gè)參數(shù)的日期必須大于第一個(gè)參數(shù)的日期。也就是結(jié)束日期要大于開始日期的,否則的話,Excel就暈了。
舉個(gè)例子吧:
開始日期是2011年3月3日,結(jié)束日期是2014年5月15日,下面這張表顯示了各個(gè)參數(shù)的不同意義:
好了,根據(jù)這個(gè)函數(shù)的特性,我們就可以設(shè)置員工生日提醒了。
假如你們公司在員工生日當(dāng)天會(huì)送禮物啥的,你得提前去購(gòu)買。因此你希望在員工信息表里能設(shè)置一個(gè)提醒,這時(shí)你就可以借助這個(gè)函數(shù)來(lái)處理。
所謂生日,必須包含月和日,而包含月和日的第三參數(shù)只有“yd”,因此,這里就是用這家伙。
但是可不可以用下面的公式來(lái)計(jì)算兩個(gè)日期之間的間隔呢?
=DATEDIF(出生日期,TODAY(),”yd”)
比如今天8月5日,員工出生日期是1980年8月13日,用上面這個(gè)公式返回結(jié)果是357天。
對(duì)于這種情況,可以做個(gè)小小的處理,假設(shè)我們希望提前10天提醒,就這么處理:“出生日期”-10。
公式為:
=DATEDIF(出生日期-10,TODAY(),”yd”)
該公式返回的結(jié)果是2,也就是說這兩個(gè)日期實(shí)際差了10-2=8天。
好了,現(xiàn)在可以來(lái)設(shè)置提醒了。
下面是模擬的員工檔案表,D4單元格的公式為:
=TEXT(10-DATEDIF(C4-10,TODAY(),”yd”),”還有0天生日;;今天生日”)
咱們以前學(xué)習(xí)過TEXT函數(shù)的用法,這里把DATEDIF函數(shù)的計(jì)算結(jié)果作為TEXT函數(shù)的參數(shù)。
“還有0天生日;;今天生日”的意思是:
DATEDIF函數(shù)的計(jì)算結(jié)果大于0的,顯示為“還有N天生日”;
小于0的不顯示;
等于0的顯示為“今天生日”。
由于DATEDIF函數(shù)第二參數(shù)在使用“YD”時(shí)有特殊的計(jì)算規(guī)則,因此當(dāng)結(jié)束日期是3月份時(shí),計(jì)算結(jié)果可能會(huì)出現(xiàn)一天的誤差。
如需得到精確結(jié)果,可以使用以下數(shù)組公式完成,還記得嗎,數(shù)組公式要按<Shift+Ctrl+回車>輸入哦。
{=TEXT(IFERROR(MATCH(TEXT(C2,”mmdd”),TEXT(NOW()+ROW($1:$11)-1,”mmdd”),)-1,-1),”還有0天生日;;今天生日”)}
公式中的C2就是出生日期所在單元格。
公式的主要思路是先構(gòu)造從今天開始連續(xù)的10個(gè)日期所組成的一個(gè)數(shù)組,然后用MATCH函數(shù)在這個(gè)數(shù)組中查找B2單元格的生日日期是否存在。
公式有點(diǎn)小復(fù)雜,這里咱們就不再進(jìn)行詳細(xì)的解釋了,表親們只要會(huì)套用即可。
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。