朋友們,大家好!
在日常工作中,我們經常用EXCEL函數處理表冊,函數的運用,大幅度提升了我們的工作效率。筆者集合工作實際,把最常用的EXCEL函數進行逐一詳細講解,課程中有大量案例,為便于朋友們更加深入了解各個函數的用法,将于每天上午7:00同步發布視頻教程和圖文教程(包含公式)。隻要不懈努力和不斷實踐,通過30天的系統學習,你也能成為EXCEL函數高手,從此告别加班,讓同事和朋友刮目相看。
今天,我将和大家一起分享時間函數DATE和DATEDIF,廣泛運用在計算每月天數、計算工齡、計算周歲等領域。
一、DATE函數基礎知識
(一)DATE函數定義
DATE函數是指返回代表特定日期的序列号,如果在輸入函數前,單元格格式為“常規”,則結果為日期格式。
語法:DATE(年,月,日)
年(YEAR):為1~4位的數字,并且要大于或者等于1900,EXCEL根據計算機使用的日期系統解釋該參數。默認情況下,EXCEL使用1900日期系統,這意味着第一個日期是1900年1月1日。
如果該參數位于0~1899(包含這兩個數)之間,則EXCEL會将該值加上1900,再計算年份。例如:DATE(121,1,1)返回2021年1月1日(1900 121)。如果該參數位于1900到9999(包含這兩個數)之間,EXCEL将使用該數值作為年份。例如:DATE(2021,1,1)将返回2021年1月1日。如果該參數小于0或大于等于10000,EXCEL将返回錯誤值#NUM!。
月(MONTH):1~12之間的數字。如果大于12,将從下年度的一月份開始往上累加計算。例如:DATE(2021,14,1)返回代表2022年2月1日的序列号。如果小于0,将從指定年份前一年的12月份開始往下減去相應的月份數。例如:DATE(2021,-2,1)返回代表2020年10月1日的序列号。
日(DAY):1~31天之間的數字。如果大于該月份的最大天數,将從指定月份下個月的第一天開始往上累加。例如:DATE(2021,1,35)返回代表2021年2月4日的序列号。
(二)DATE函數案例實踐
1.通過身份證号碼提取出生日期并轉換為标準日期
某單位在制作職工基本信息表的時候,已經輸入了身份證号碼,還需要填寫出生日期,為了實現快速輸入,需要一次性從身份證号碼中提取出生日期并轉換為标準日期格式,前幾節課講過用TEXT函數進行轉換,本例還可以使用DATE函數進行轉換。
在C3單元格中輸入公式:=DATE(MID(B3,7,4),MID(B3,11,2),MID(B3,13,2)),按回車鍵即可通過身份證号碼提取出生日期并轉換為标準日期。見下圖:
DATE函數可以将代表年月日的數字轉換為日期序列号,如果輸入公式前單元格格式是常規格式,該函數會默認以标準日期格式顯示計算結果。
本例也可以使用文本連接符&将提取的年月日連接起來,雖然這樣連接起來的日期中的月份和天數都是兩位數,但是EXCEL依然會将其視為日期,其公式可寫成:=MID(B3,7,4)&"-"&MID(B3,11,2)&"-"&MID(B3,13,2)。
2.計算指定月份的天數
某單位每月都要對周末和節假日排班,因為每個月的天數略有不同,現在需要用EXCEL制作一個公式,要求該公式能夠返回當月的天數,并且能夠随着時間的變化而變化。
需要知道某月有多少天,一般的方法是先判斷該月是大月份還是小月份,如果是大月,該月就是31天;如果為非2月份的小月,則為30天;如果是2月份,還要判斷該年是閏年還是平年,閏年則2月份有29天,平年則有28天。如果在EXCEL中用該方法計算當月的天數,寫成的公式就會顯得很複雜。但是因為每個月的最後一天就是該月的天數,所以隻要知道了該月的最後一天,就可以知道該月的天數,可以通過EXCEL中日期函數的自動進位功能來實現。
在B3單元格中輸入公式:=DAY(DATE(YEAR(A3),MONTH(A3) 1,0)),按回車鍵即可得到A3單元格指定的月份天數。見下圖:
日期函數之所以具有自動進位的功能,這和EXCEL使用日期序列号記錄日期有着很大的關系,當DATE函數第三個參數設置為0的時候,相當于該月第1天的前一天,即上個月的最後一天。
本例中,YEAR(A3)是指A3單元格的年度,MONTH(A3)是指A3單元格的月份,因為第三個參數0指的是上個月的最後一天,所以要 1将月份指定為當前月份,然後将YEAR(A3)、MONTH(A3) 1和0作為DATE的三個參數,最後用DAY函數得到天數。
二、DATEDIF函數基礎知識
(一)DATEDIF函數定義
DATEDIF函數是指返回兩個日期之間的年\月\日間隔數,常使用DATEDIF函數計算兩日期之差,時間單位包含D,M,Y,YD,YM,MD。
語法:DATEDIF(起始日期,結束日期,時間單位)
起始日期:必需參數,表示給定期間的第一個或開始的日期。日期值有多種輸入方式:包括帶引号的文本字符串、序列号或其他函數的結果等。
結束日期:必需參數,代表時間段内的最後一個日期或結束日期。
時間單位:必需參數,是指為“起始日期”和“結束日期”返回時間單位的代碼。
"Y"表示兩個日期以“年”為單位的時間間隔。
"M"表示兩個日期以“月”為單位的時間間隔。
"D"表示兩個日期以“日”為單位的時間間隔。
"MD"忽略“年”和“月”後,兩個日期以“日”為單位的時間間隔。
"YD"忽略“年”後,兩個日期以“日”為單位的時間間隔。
"YM"忽略“年”,兩個日期以“月”為單位的時間間隔。
(二)DATEDIF函數案例實踐
1.根據身份證号碼計算周歲
在工作中,我們經常會利用身份證号碼提取出生日期,同時會計算年齡,通常用當前年數減去出生年進行計算,但是這樣計算出來的結果并不是真正的年齡,比如相差一個月按一年計算。本例中用DATEDIF函數,通過身份證号碼計算周歲。
在C3單元格中輸入公式:=DATEDIF(TEXT(MID(B3,7,8),"0000-00-00"),TODAY(),"Y"),按回車鍵即可根據身份證号碼計算周歲。見下圖:
本例中,用MID(B3,7,8)從身份證号碼中提取出生日期,然後用TEXT将出生日期轉換為标準日期格式,作為DATEDIF函數的第1個參數“起始日期”,然後用TODAY()得到當前日期作為第2個參數,用"Y"作為第3個參數即可得到周歲。
2.根據工齡計算職工公休的天數
某單位每年安排職工公休,規定工齡不足5年享受5天公休假;工齡20年以下享受10天公休假;工齡20年以上享受15天公休假,現在需要計算每位職工每年的公休假天數。
在C3單元格中輸入公式:=DATEDIF(B3,TODAY(),"Y"),計算出工齡,在D3單元格中輸入公式:=IF(C3<10,5,IF(C3<20,10,15)),按回車鍵即可根據工齡計算出每年的公休假天數。見下圖:
本例中,利用輔助列C列計算出工齡,然後用IF函數進行判斷,這樣寫成的公式容易理解。如果不用輔助列,公式可寫成:=IF(DATEDIF(B3,TODAY(),"Y")<10,5,IF(DATEDIF(B3,TODAY(),"Y")<20,10,15)),公式相對要長一些,新手不容易理解,建議使用輔助列輔助計算。
3.計算精确到月份的職工工齡
計算職工的工齡,其實就是計算職工參加工作的時間和當前時間之間的日期間隔,使用DATEDIF函數就可以解決這樣的問題。
在D3單元格中輸入公式:=TEXT(DATE(0,DATEDIF(C3,TODAY(),"M"),1),"y年m月"),按回車鍵即可計算出精确到月份的職工工齡。見下圖:
本例中,使用DATEDIF(C3,TODAY(),"M")計算出工齡的總月數,然後用DATE将代表年的0、DATEDIF計算的月份數和代表每月1日的1轉換為日期,最後用TEXT函數将顯示格式轉換為年和月。
以上就是日期函數DATE和DATEDIF的基礎知識和經典案例,想要學習好EXCEL函數,要學會多個函數的組合,後續課程中我們會講到多函數結合的用法,能進行更為複雜的計算,對提升工作效率有很大幫助。
個人建議:在學習EXCEL函數時,首先要熟悉函數的功能和語法,盡量多寫,通過反複書寫和實踐,對照文中的案例,舉一反三,我相信,你的EXCEL技巧會得到快速提升,日積月累,必成大器!
感謝朋友們的支持,如果你有好的意見建議和問題,歡迎在評論區留言交流,期待你的精彩!
,