工作量當(dāng)然得以“工作日”的數(shù)量去安排,但每個月的天數(shù)不同,而且周六日也不盡相同。如果想準確地知道一個月有多少個工作日,可以請Excel來幫忙!
任務(wù)分析
因為每月的總天數(shù)和雙休日的分布是不同的,而且春節(jié)是農(nóng)歷的假期,簡單地使用Excel函數(shù)去計算是滿足不了要求的。我們先使用Excel“分析工具庫”中的networkdays()函數(shù)計算出“準工作日”,再考慮其中的特殊農(nóng)歷假日。這樣就能準確的算出“工作日”的天數(shù)。
有請 networkdays()函數(shù)
通常情況下,在Excel中是找不到這個函數(shù)的。別著急,跟我來。單擊“工具→加載宏”,在彈出的“加載宏”對話框中復(fù)選“分析工具庫”,再單擊“確定”按鈕。將Office的安裝光盤放入光驅(qū),按提示即可安裝成功,如圖1。

外來的和尚念不好經(jīng)
networkdays()函數(shù)的語法為:networkdays(Start_date,End_date,Holidays)。其中 Start_date表示開始日期,End_date為終止日期,Holidays表示一個或者多個特定假日序列,可以采用單元格引用的方式。
如圖2,B8單元格公式“=networkdays(B2,B3,B4:B6)”結(jié)果為20。事實上,2004年的10月2日和3日是星期六和星期天,那么按照我們的習(xí)慣就會通過調(diào)休的方式,最終得到10月份只有18天上班,而不是networkdays()函數(shù)計算出的20天。
特殊假日的處理
雖然說直接應(yīng)用networkdays()函數(shù)并不能得到正確的工作日天數(shù),但我們還是可以通過對此函數(shù)的變化來得到。圖3是我們的范例,演示了如何一步一步逼近我們的目標。
第一步:將A列定義為月份。選中A列,在右鍵菜單中選擇“設(shè)定單元格格式”,在“數(shù)字”標簽中選擇“分類”為“自定義”,“類型”中輸入“yyyy-mm”格式,單擊“確定”按鈕退出。
第二步:設(shè)計B列公式。先直接用networkdays()函數(shù)計算只考慮本月除去雙休日后的天數(shù)。雖然可直接使用該函數(shù),但需要知道每月的開始日期和終止日期。開始日期當(dāng)然是每月的1日,用“date(year(A2),month(A2),1)”表示就OK了。結(jié)束日期應(yīng)當(dāng)是每月的最后一天,這就有些難度了,究竟是30日、31日還是28日、29日?需要一個復(fù)雜的判斷關(guān)系。這里我們采用了一個變通的辦法,就是當(dāng)月的最后一天其實就是下月的第一天再減去1天,所以我們可以用“date(year(A2),month(A2)+1,1)-1”來表示。于是B2的公式就有了:“=networkdays (date(year(A2),month(A2),1),date(year(A2),month(A2)+1,1)-1)”。

 第三步:計算除了春節(jié)以外的雙休日。我們知道國家規(guī)定的公眾假日一共10天,除了春節(jié)的3天是每年變化的外,其余元旦1天,勞動節(jié)3天,國慶節(jié)3天都是固定的。因此我們可以用IF函數(shù)對月份是否是1 月、5月和10月做判斷,再來減去相應(yīng)的公眾假日天數(shù),就得到了不考慮春節(jié)以外的工作日。于是C2=if(month(A2)=5,B2-3,if (month(A2)=5,B2-3,if(month(A2)=1,B2-1,B2)))或者使用or()函數(shù)就是C2=if(or(month (A2)=5,month(A2)=10),B4-3,if(month(A2)=1,B4-1,B4))。
第四步:考慮春節(jié)的問題。根據(jù)常識,春節(jié)的三天只會在1月份或者2月份出現(xiàn),也就是說最后的判斷只正對1、2月份。通過萬年歷查詢得到2000——2010這十年的春節(jié)分布,巧的是正好沒有春節(jié)三天跨月份的年份,也就是說春節(jié)三天不是落在1月份就是落在2月份,如圖4所示,這給我們應(yīng)用IF函數(shù)判斷帶來了方便。通過對年份和月份的判斷,減去相應(yīng)的春節(jié)天數(shù),就得到了真正意義上的工作日。因此在D2中應(yīng)該輸入=IF(AND(OR(YEAR(A2)=2001,YEAR(A2) =2004,YEAR(A2)=2006,YEAR(A2)=2009),MONTH(A2)=1),C2-3,IF(AND(OR(YEAR(A2)=2000, YEAR(A2)=2002,YEAR(A2)=2003,YEAR(A2)=2005,YEAR(A2)=2007,YEAR(A2)=2008,YEAR (A2)=2010),MONTH(A2)=2),C2-3,C2))。
 第五步:隱藏過渡列。選中“B:C”這兩列,在右鍵菜單中選擇“隱藏”,將中間用于計算方便所使用的過渡列B和列C隱藏即可。
選中區(qū)域B2:D2,按住填充柄向下拖動填充后,只要在A列任一單元格輸入月份,就可以在D列得到該月相應(yīng)的天數(shù),是不是很方便?
|
|