首頁 > 軟體

怎麼在excel表中使用DATEDIF函數

2020-07-14 14:34:16

這篇文章將帶大家了解一下DATEDIF函數,這個函數在日常生活中超級實用,可以根據出生日期、身份證來計算出你的年齡,還可以設定生日提醒,以免你忘記某人生日哦,快快學起來吧!

一、 初識DATEDIF

DATEDIF函數用於計算兩日期之差,返回兩個日期之間的年、月、日間隔數

函數結構:DATEDIF(起始日期,結束日期,返回型別)

1.引數解釋

1)起始日期和結束日期

起始日期、結束日期作為需要計算差異的兩個日期。

這兩個日期的輸入方法如下:

①可以直接輸入帶引號的日期,例如"2017/10/16"。注意起始日期不能早於1900年,結束日期要大於起始日期。

②也可以直接參照單元格中的日期

③還可以利用其他函數得到,例如TODAY() (注意:範例當日是2019年2月15日)

2)返回型別

返回型別用於設定結算結果的型別。返回型別是文字,輸入時須要帶雙引號。

y:返回兩個日期之間相差整年數(不足一年的不計)

m:返回兩個日期之間相差整月數(不足一月的不計)

d:返回兩個日期之間相差的天數

ym:計算兩日期之間略去整年差異後的整月數差異。譬如,兩個日期(2017-4-20,2019-2-20)相差1年10月,略去整年差異1年,則ym的結果就是10月。再譬如,兩個日期(2018-4-20,2019-2-20)相差10月,則ym的結果是10月。

yd:計算兩日期之間略去整年差異後的天數差異。譬如,兩個日期(2017-4-20,2019-2-20)相差1年零306天,略去整年差異1年,則ym的結果就是306天。

md:計算兩日期之間略去整年和整月差異後的天數差異。譬如,兩個日期(2017-4-20,2019-2-25)相差1年10月零5天,略去整年和整月差異1年10月,則md的結果就是5天。

2.小栗子

DATEDIF("2017/2/15","2019/2/15","y"),計算"2017/2/15"與"2019/2/15"之間相差幾個整年。這裡相差兩個完整的年,所以等於2。

DATEDIF("2017/1/6","2019/2/15","d"),計算"2017/1/6"與"2019/2/15"之間相差的天數,等於770。

DATEDIF("2017/1/6","2019/2/15","ym"),計算兩日期之間除開整年外的間隔月數。兩日期之間實際相差25月,包含了2個整年(24月),所以ym型別返回值為25-24=1。

DATEDIF("2017/1/6","2019/2/15","yd"),計算兩日期之間除開整年外的間隔天數。兩日期之間實際相差770天,包含了2個整年(730天),所以yd型別返回值為770-730=40。

3.使用要點

1)雙引號

到這裡,相信小夥伴們對於DATEDIF函數已經有了初步的認識,可以寫幾個公式練練手啦。寫公式中需注意雙引號的使用。

(1)如果第1、2引數是直接輸入日期,則日期必須帶雙引號。

(2)第3引數是文字,一定要記得帶上雙引號。

2)錯誤型別

DATEDIF函數如果發生錯誤,通常有以下三類:

錯誤程式碼錯誤原因

#NUM!①函數第三引數返回型別輸入值有誤

②第一引數比第二引數大

#VALUE!開始或結束日期所參照的單元格格式不是日期格式

#NAME?①函數輸入有誤

②文字型別的資料沒帶雙引號

二、DATEDIF函數實際應用例舉

1.根據出生日期計算年齡

已知下面員工的出生日期,求他們今年的年齡。

公式:=DATEDIF(D2,TODAY(),"y")

TODAY()函數獲取的是系統當前日期,列舉的範例為2019/2/15日的計算結果,並不一定和小夥伴們得到的結果相符哦~

2.根據身份證號碼計算年齡

上一例中已經有了出生日期,所以直接用DATEDIF函數套用TODAY函數即可計算出年齡。如果只有身份證號碼,要計算年齡,就需要把出生日期從身份證號碼中提取出來後再計算。公式如下:

①         ②        ③

公式解析:

①使用MID函數提取出身份證號碼中出生日期的8位元數位。

②用TEXT函數讓這8位元數位以"0-00-00"的格式顯示,得到像日期格式的文字,然後在TEXT函數前加上負負得正的運算,將文字轉換為日期。

③最後將上面得到的日期作為DATEDIF函數的起始日期,將TODAY()作為結束日期,設定返回型別為“y”,即可計算出兩日期之間相差的整年數——年齡。

3.根據入職日期計算員工工齡(以年月日的形式展現)

用例1計算年齡的方法,如果知道員工入職的時間,即可計算出按整年計的員工工齡。但如果需要計算出詳細的員工工齡,如多少年多少月多少天,該怎麼做呢?答案如下:

公式雖長,卻特別好理解。首先用三個DATEDIF函數分別計算出兩日期之間相差幾年幾月幾日,最後再用文字連線符“&”進行連線,得到結果。

4.計算工齡工資

根據2019年國家出臺的工齡工資規定,員工連續工作滿一年 50元/月;連續工作滿兩年 100元/月;連續工作滿三年150元/月;連續工作滿四年180元/月,以此類推,累計十年封頂。

小夥伴是不是一頭霧水呢?沒事,我們一步一步來,首先計算工齡(按整年計算)。

公式:=DATEDIF(C2,D2,"y")

接著,來到我們的重頭戲,計算工齡工資。

這裡我們借助了IF函數和MIN函數。

根據2019年國家出臺的工齡工資規定,1-3年工齡工資每年是以50來遞增的,4-10年的工齡工資每年是以30來遞增的。我們可以使用IF函數分開判斷。

首先判斷工齡E2是否小於4,小於4則表示員工工齡工資是以每年50來遞增,返回“”的結果;如果工齡E2不小於4,工齡工資則是在150的基礎上以每年30來遞增,返回“”的結果。

因為工齡工資只能累計十年,大於十年的工齡工資與十年的工齡工資一致,所有我們使用MIN函數返回10和E2中的最小值作為工齡。

5.製作員工生日提醒

下面是一張員工的資訊表,我們想做一個生日提醒,提前7天提醒某員工的生日快到了。

提示:和IF函數結合使用,快開動腦筋想一想吧~

 

①                ②     ③

是不是感覺這個公式很燒腦?

我們日常計算距離生日的天數都是用即將到來的生日日期減去今天的日期。而這個公式與我們的習慣不同,它用今天的日期減去出生日期進行計算,並且還將出生日期減少了7天。

為何能這樣做?

首先我們來看看yd返回型別下不同的當前日期與出生日期的間隔天數規律。下表以出生日期1999年2月22日為例,展示了昨天、今天、明天、後天等距離出生日期的天數。

N16單元格公式= DATEDIF($J$13,N15,"yd"),$J$13代表出生日期,N15代表不同的當前日期。

很明顯,生日當天間隔為0;小於生日日期的,日期越趨近生日,間隔天數越大越趨近365;大於生日日期的,日期越趨近生日,間隔天數越小越趨近0。

其次,在這種情況下,直接套用IF函數根據間隔天數是否小於等於7來給出生日提醒的公式=IF(DATEDIF($J$13,N15,"yd")<=7,"快過生日啦","")無法實現提前7天提醒。相反,它只能實現生日當天和生日後7天的提醒,如下:

最後,那怎麼才能提前7天提醒?有兩種方法。第一種,設法讓間隔天數0-7提前7天出現。這時,要麼把起始日期減少7天($J$13-7),要麼把結束日期增加7天(N15+7),如下:

起始日期減少7天後的間隔天數

起始日期減少7天後的生日提醒

第二種,修改判斷條件,把<=7修改為>=358即可。如下:

修改判斷條件後,生日當天不會提醒。

Ok,到這裡,相信大家就理解前面的公式了。在此基礎上,我們可以修改公式,讓提醒更人性化:

=IF(DATEDIF(D3-7,TODAY(),"yd")<=7,"還有"&7-DATEDIF(D3-7,TODAY(),"yd")&"天過生日啦","")

再多說兩句:如果按平常思路用即將到來的生日日期減去當前日期來計算距離生日的天數,生日提醒公式該怎麼寫呢?答案如下:

=IF(DATEDIF(TODAY(),IF(TEXT(D3,"M月DD日")<TEXT(TODAY(),"M< style="MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; user-select: text" span="">月DD日"),YEAR(TODAY()+365),YEAR(TODAY()))&"年"&TEXT(D3,"M月DD日"),"yd")<=7,"快過生日啦","")

這是一個非常長的公式!!!

長就長在即將到來的生日日期提取。

公式中的IF(TEXT(D3,"M月DD日")<TEXT(TODAY(),"M< style="MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; user-select: text" span="">月DD日"),YEAR(TODAY()+365),YEAR(TODAY()))&"年"&TEXT(D3,"M月DD日")用於獲取即將到來的生日日期。意思是:如果出生日期中的月日數小於今日的月日數,說明今年的生日已經過去了,新的生日日期應該是YEAR(TODAY()+365)&"年"&TEXT(D3,"M月DD日";反之,說明今年的生日還沒過,生日日期應該是YEAR(TODAY())&"年"&TEXT(D3,"M月DD日"。

YEAR(TODAY())提取今年的年份,加上365,則得到明年的年份。

TEXT(D3,"m月dd日")提取出生日期中的月份和號數。

到此,DATEDIF函數就介紹完畢。不論是計算年齡、工齡、工齡工資,還是給出生日提醒,都可以用DATEDIF實現。當然,DATEDIF也完全可以用來計算專案用時、距離完工日天數,做完工倒計時提醒。如果你是做人事、做工資核算、做專案管理的,那麼趕緊操練起來吧!


IT145.com E-mail:sddin#qq.com