日期時(shí)間函數(shù)之四:求日期四函數(shù)
兔年春節(jié)就要到了,李老師總想送點(diǎn)什么給大伙兒。

知識(shí)無價(jià),大家學(xué)習(xí)學(xué)習(xí)EXCEL的日期和時(shí)間函數(shù),都在這兒了,共5講,今天這是第4講。

EDate函數(shù)
EDate是Equal Date的略寫,英文意思就是“等值日期”,它求取某個(gè)指定日期前后偏移若干月的同一天的日期,函數(shù)形如“=EDate(日期/日期文本,偏移的月數(shù))”,函數(shù)共2個(gè)參數(shù),均為必選參數(shù),分別是第一參數(shù)指定的某個(gè)日期,第二參數(shù)要前移(用負(fù)數(shù)表示)或后移(用正數(shù)表示)的月數(shù)。我們來舉幾小栗子嘗嘗,見圖1:

圖1 EDATE函數(shù)示例
①公式“=EDATE(B2,B3)”,將B2日期2023/1/1偏移0個(gè)月,也就是不偏移,因此得到對(duì)月同一天的日期是2023/1/1;
②公式“=EDate("2022/12/31",1)”,第一參數(shù)直接用文本指定,月份后移1個(gè)月,因此得到對(duì)月同一天的日期是2023/1/31;
③公式“=EDATE(E2,E3)”,將E2日期2022/3/30偏移E3(-1),也就是向前移動(dòng)到2月,但2月是不可能有30日的,因此取2月最后一天,得到對(duì)月同一天的日期是2022/2/28;
④公式“=EDATE(F2,F3)”,將F2日期2022/3/3偏移F3(-1.59),1.59不是整數(shù),函數(shù)自動(dòng)舍去尾部0.59,也就是向前移動(dòng)1,到2月,得到對(duì)月同一天的日期是2022/2/3。
注意第4行已設(shè)置為日期格式,如設(shè)置常規(guī)格式,所見應(yīng)為數(shù)值。

EOMONTH函數(shù)。EOMONTH是End Of Month的首字母縮寫,英文意思就是“某月的最后一天”。它求取某個(gè)指定日期前后偏移若干月的月末的日期,函數(shù)形如“=EOMONTH(日期/日期文本,偏移的月數(shù))”,函數(shù)共2個(gè)參數(shù),均為必選參數(shù),分別是第一參數(shù)指定的某個(gè)日期,第二參數(shù)要前移(用負(fù)數(shù)表示)或后移(用正數(shù)表示)的月數(shù)。我們來舉幾小栗子嘗嘗,見圖2:

圖2 EOMONTH函數(shù)示例
①公式“=EOMonth(B2,B3)”,將B2日期2023/1/1偏移B3(0)個(gè)月,也就是不偏移,因此得到月末日期是2023/1/31;
②公式“=EOMonth(C2,C3)”,將C2日期2022/1/17偏移C3(1),也就是向后移動(dòng)到2月,因此取2月最后一天,得到的日期是2022/2/28;
③公式“=EOMonth(D2,D3)”,將D2日期2022/3/30偏移D3(-1),也就是向前移動(dòng)到2月,因此取2月最后一天,得到的日期是2022/2/28;
④公式“=EOMonth(E2,E3)”,將E2日期2022/3/3偏移E3(-1.59),1.59不是整數(shù),函數(shù)自動(dòng)舍去尾部0.59,也就是向前移動(dòng)1,到2月,因此取2月最后一天,得到的日期是2022/2/28;
⑤公式“=EOMonth("2022/12/31",1)”,第一參數(shù)直接用文本指定,月份后移1個(gè)月,因此得到的日期是2023/1/31。
對(duì)于EOMonth這個(gè)函數(shù),要強(qiáng)調(diào)的是:
①這個(gè)函數(shù)經(jīng)常有人將第2個(gè)字母忘了寫成EMonth,沒有這樣的函數(shù)的;
②如果僅第一個(gè)參數(shù)來求月末日期,EOMonth又顯得太單薄了,加上個(gè)偏移月數(shù),函數(shù)就完善了;
③如果指定的日期或加上偏移月數(shù)的日期無效,則提示#NUM!錯(cuò)誤;
④注意第4行已設(shè)置為日期格式,如設(shè)置常規(guī)格式,所見應(yīng)為數(shù)值;
指定的日期,不管是哪一天,只看日期中的月和偏移月數(shù)來求對(duì)月的月末日期。

WorkDay函數(shù)。Day的前面加上Work,英文意思就是“工作日”,計(jì)算某日期(起始日期)之前或之后,與該日期相隔若干工作日的某一日期的日期值。函數(shù)形如“=WorkDay(開始日期,偏移幾個(gè)工作日,除外的休息日)”,有工作日就有休息日,不然得累死,機(jī)器還得加油呢。函數(shù)共3個(gè)參數(shù),第一、第二參數(shù)是必選參數(shù),第一參數(shù)指定開始計(jì)算的日期,一定要按照你電腦格式的日期來輸入,日期可以直接輸入或者是其他函數(shù)的計(jì)算結(jié)果,不能是文本;第二參數(shù)為數(shù)字,正數(shù)、負(fù)數(shù)均可,如不是整數(shù),自動(dòng)舍棄小數(shù)部分;第三參數(shù)是可選參數(shù),除周六周日是休息日外,利用這個(gè)參數(shù)來聲明要將哪些日期排除在工作日之外,可以是常量數(shù)組或者某單元格區(qū)域,參數(shù)中的日期不需要排序。
“開始日期”“結(jié)束日期”“間隔的工作日天數(shù)”,三要素,知二求一,這里是求的“結(jié)束日期”。

圖3 WorkDay系函數(shù)示例
選中圖3單元格區(qū)域I4:L4,在公式編輯欄輸入“=WORKDAY(I2,I3,$H$12:$L$19)”,按Ctrl_Enter,就可以知道幾個(gè)工作日后是哪一天了,你在窗口單位比如機(jī)關(guān)、政務(wù)窗口,經(jīng)常會(huì)要求“過3(或n)個(gè)工作日再來”,用這個(gè)函數(shù)就可以知道是哪一天再來了。
驗(yàn)證單元格L4,從2023/9/27(周3)過后兩個(gè)工作日,即27和28日,之后,29-6日是2023年國(guó)家法定假日,按理說,WORKDAY函數(shù)應(yīng)該給出結(jié)果是2023/10/7,但10/7和10/8是雙休,函數(shù)認(rèn)為它應(yīng)該休息日,又向后推移了兩日,給出結(jié)果是2023/10/9。很顯然,這是不對(duì),WORKDAY函數(shù)不知道我國(guó)還有調(diào)班這種情況,10/7和10/8不是雙休,應(yīng)算工作日。
WORKDAY函數(shù)要注意以下幾點(diǎn):
①如函數(shù)第一參數(shù)、第三參數(shù)中有無效的日期,則會(huì)報(bào)錯(cuò)#Value!;
②如開始日期加上偏移幾個(gè)工作日天數(shù)生成無效日期,則會(huì)報(bào)錯(cuò)#NUM?。?/span>
③如偏移幾個(gè)工作日天數(shù)不是整數(shù),將截尾取整;
④函數(shù)以周六、周日為休息日(非工作日)。

WorkDay.INTL函數(shù)。在WorkDay后加INTL(International,“國(guó)際”),英文意思就是“國(guó)際工作日”,計(jì)算可自定義休息日的、某日期(起始日期)之前或之后,與該日期相隔若干工作日的某一日期的日期值。函數(shù)形如“=WorkDay(開始日期,偏移幾個(gè)工作日, 自定義的休息日字符或數(shù)字代碼,除外的休息日)”。函數(shù)共4個(gè)參數(shù),第一參數(shù)是必選參數(shù),指定開始計(jì)算的日期,一定要按照你電腦格式的日期來輸入,日期可以直接輸入或者是其他函數(shù)的計(jì)算結(jié)果,不能是文本;第二參數(shù)為數(shù)字,正數(shù)、負(fù)數(shù)均可,如不是整數(shù),自動(dòng)舍棄小數(shù)部分;第三參數(shù)是可選參數(shù),是在WorkDay的基礎(chǔ)上插入的一個(gè)新參數(shù);第四參數(shù)是可選參數(shù),利用這個(gè)參數(shù)來聲明要將哪些日期排除在工作日之外,可以是常量數(shù)組或者某單元格區(qū)域,參數(shù)中的日期不需要排序。
關(guān)于第三新參數(shù),有兩類可能的取值:一類是7位由0和1組成的字符串,如“0010010”“1001001”,其中1代表非工作日(休息日),0代表工作日,7位數(shù)代表從周1到周7(日),當(dāng)然這個(gè)字符串不能是“1111111”,全休息日、沒有工作日是不行的; 另一類是數(shù)字1-7(雙休)和11-17(單休),其中1或省略代表周六和周日雙休,2代表周日和周一雙休…11代表周日單休,12代表周一單休…
“開始日期”“結(jié)束日期”“間隔的工作日天數(shù)”,三要素,知二求一,這里是求的“結(jié)束日期”。
選中圖3單元格區(qū)域C3:C19,在公式編輯欄輸入“=WORKDAY.INTL($C$2,D3,E3,$H$12:$L$19)”,按Ctrl_Enter,以單元格E10“=WORKDAY.INTL(45196,26,5.36,$H$12:$L$19)”為例,從2023/9/27開始的26個(gè)工作日后的日期是2023/11/11(以周三、周四為雙休)。
與WORKDAY函數(shù)相比,WORKDAY.INTL函數(shù)增加了自定義休息日的功能,這是其優(yōu)點(diǎn),但也要注意以下幾點(diǎn):
①如函數(shù)第一參數(shù)、第四參數(shù)中有無效的日期,則會(huì)報(bào)錯(cuò)#NUM!;
②如開始日期加上偏移幾個(gè)工作日天數(shù)生成無效日期,則會(huì)報(bào)錯(cuò)#NUM??;
③如第三參數(shù)使用數(shù)字,但不是整數(shù),將截尾取整;如果周末字符串的長(zhǎng)度無效或包含無效字符,則會(huì)報(bào)錯(cuò)#Value!。
下節(jié)預(yù)告:
日期時(shí)間函數(shù)之五:求日期間隔的Days系&YearFrac函數(shù)
Q:你要問,教程有配套的案例文件嗎?
A:教程是很詳細(xì)的,沒有案例文件,對(duì)照?qǐng)D文是可以學(xué)會(huì)的,但使用案例文件更快捷些,如果需獲取案例文件,可關(guān)注微信公眾號(hào)【智匯會(huì)計(jì)連鎖】,加QQ【案例專用群】581529975群文件自?。艽a在公眾號(hào)回復(fù)dt202301自動(dòng)獲?。?,第一課的案例文件免費(fèi)送的哦。