除了年月日和時分秒,我們還會使用的是星期數(shù),如今天是星期幾。在Excel的函數(shù)中有WEEKDAY函數(shù),它的語法是:WEEKDAY(serial_number,[return_type])其中,serial_number參數(shù)是指定的日期;return_type參數(shù)對應(yīng)數(shù)字的含義如圖13-1所示。圖13-1WEEKDAY函數(shù)參數(shù)說明簡單記憶,使用數(shù)字“2”即可。因為數(shù)字2返回的結(jié)果是以星期一為一周的起點,將星期一到星期日返回結(jié)果對應(yīng)為1到7,這種方式相對其他參數(shù)來說,比較直觀,可以直接看出來當前日期是星期幾。如圖13-2所示,在D9單元格中輸入以下公式,并向下復(fù)制到D22單元格,即可得到C列對應(yīng)的日期:=WEEKDAY(C9,2)圖13-2WEEKDAY示例13.2計算幾個月后的日期或月底日期下面要介紹的兩個函數(shù),使用后可使公式大大縮短。n月后日期:EDATE(start_date,months)n月后月底日期:EOMONTH(start_date,months)其中,參數(shù)months可以為正數(shù),也可以為負數(shù)或零。EDATE函數(shù)是計算幾個月后對應(yīng)的日期,EOMONTH函數(shù)是計算幾個月后的月底的日期。經(jīng)常有同學(xué)將EOMONTH拼錯了,我們可以這樣記憶:EOMONTH縮寫于EndOfMONTH,提取相應(yīng)的字頭就形成了EOMONTH。1.常規(guī)使用如圖13-3所示,C11單元格為任意日期,這里為2017/2/8,D列為EDATE函數(shù)的相應(yīng)公式。圖13-3EDATE與EOMONTH的常規(guī)使用D11單元格“=EDATE($C$11,5)”,計算5個月后的對應(yīng)日期,結(jié)果為2017/7/8。D12單元格“=EDATE($C$11,0)”,計算0個月后的對應(yīng)日期,結(jié)果為2017/2/8。D13單元格“=EDATE($C$11,-4)”,計算-4個月后的對應(yīng)日期,也就是4個月前,結(jié)果為2016/10/8。F列為EOMONTH函數(shù)的相應(yīng)公式。F11單元格=“EOMONTH($C$11,5)”,計算5個月后的月底日期,結(jié)果為2017/7/31。F12單元格=“EOMONTH($C$11,0)”,計算當月的月底日期,結(jié)果為2017/2/28。F13單元格=“EOMONTH($C$11,-4)”,計算-4個月后的月底日期,也就是4個月前,結(jié)果為2016/10/31。2.對月底日期的處理對于月底最后一天日期分別是30和31日的情況,EOMONTH函數(shù)在處理過程中沒有任何差異,而EDATE函數(shù)處理時會有一些區(qū)別。(1)日期為月底31日。如圖13-4所示,起始日期為某月的31日,如2017/1/31,而幾個月后有31日的,就返回對應(yīng)的結(jié)果,如2017/7/31。如果當月沒有31日,則返回相應(yīng)月份月底的最后一天,如2016/9/30、2017/2/28等。 圖13-4日期為月底31日(2)日期不為月底31日。如圖13-5所示,起始日期為某月的月底,即30日,如2017/4/30,而幾個月后有30日的,就返回對應(yīng)的結(jié)果,如2017/10/30、2017/4/30。如果當月沒有30日,則返回相應(yīng)月份月底的最后一天,如2017/2/28、2016/2/29。 圖13-5日期為月底不為31日3.實戰(zhàn)(1)案例:計算退休日期。某人的生日為1980/9/15,按照男60周歲退休,女55周歲退休的規(guī)定計算(這里只是假設(shè)條件,實際情況請依據(jù)國家規(guī)定),那么男女退休日期分別是哪天。根據(jù)男60周歲退休,其公式為:=EDATE(D33,60)于是得到結(jié)果1985/9/15,很顯然,得到的是錯誤結(jié)果,那么錯在哪里了?EDATE講的是幾個月之后的日期,公式中的數(shù)字60表達的并不是60年,而是60個月。如圖13-6所示,正解為:=EDATE(D33,60*12)=EDATE(D33,55*12) 圖13-6計算退休日期(2)案例:計算合同到期日。某員工新入職,簽訂合同日期為2017/2/8,合同期限為3年,那么合同到期日是哪天?這里分兩種情況來計算。【計算方式1】合同期限按照整3年計算,則可以直接用EDATE函數(shù),在D39單元格輸入以下公式:=EDATE('2017/2/8',3*12)語法上沒錯,但必須結(jié)合工作中的實際情況來驗證這個公式。該公式返回結(jié)果為2020/2/8,在簽訂合同時,起止日期都算作工作日,按照這個計算結(jié)果,簽訂的合同并不是整3年,而是3年零1天。所以,有必要作一下修正,于是將D39單元格的公式修正為:=EDATE('2017/2/8',3*12)-1【計算方式2】公司HR為了統(tǒng)一管理,將合同到期日統(tǒng)一按照3年后的月底最后一天的日期簽訂,于是在D40單元格輸入以下公式:=EOMONTH('2017/2/8',3*12)計算結(jié)果如圖13-7所示。圖13-7計算合同到期日(3)案例:當年每月有多少天。工作中計算每個月各有多少天,在前面我們通過DATE、YEAR、MONTH、DAY函數(shù)計算過,但是公式有點長,現(xiàn)在換一種算法。C列為1~12月,“1月1日”“2月1日”……“12月1日”屬于Excel標準日期格式,所以我們可以將1~12月的字段構(gòu)造成標準的日期格式,并且通過EOMONTH函數(shù)得到每月最后一天的日期,最后使用DAY函數(shù)提取其中的“日”,即可得到最終結(jié)果。順著此思路分步寫出以下公式。在E43單元格輸入公式:=C43&'1日'在F43單元格輸入公式:=EOMONTH(E43,0)在G43單元格輸入公式:=DAY(F43)如圖13-8所示,將分步的思路整合在一起,最終形成嵌套公式:=DAY(EOMONTH(C43&'1日',0))圖13-8當年每月有多少天提示一點,“1月1日”這種格式適用于中文版Excel,但在某些英文版的Excel中無法正常計算,遇到英文版Excel時,整體DAY+EOMONTH的思路不變,將日期改為“1-1”的形式,就可以通用了,公式可寫為:=DAY(EOMONTH(LEFTB(C43,2)&'-1',0))在某些英文版的Excel無法識別LEFTB函數(shù),無法準確提取月份。因此,我們將LEFTB函數(shù)換成SUBSTITUTE函數(shù):=DAY(EOMONTH(SUBSTITUTE(C43,'月','-1'),0)) END