| 用Excel自定義函數計算工作日 | |
| |
|---|
| 文章來(lái)源:PCM 作者:其他 2006-10-20 |
| 在Excel中,通過(guò)將兩個(gè)日期值進(jìn)行減運算,可以得到這兩個(gè)日期相隔的天數;而將一個(gè)日期值與一個(gè)表示天數的整數相加減,則可以得到一個(gè)相隔該整數代表的天數的日期,這是Excel提供的雖然簡(jiǎn)單卻相當實(shí)用的日期計算功能。然而,該功能在實(shí)際應用中的局限性,使其無(wú)法滿(mǎn)足更高層次的需要,特別是“工作日”這一概念逐漸在各領(lǐng)域廣泛應用,許多工作都需要進(jìn)行與之相關(guān)的計算。最常見(jiàn)的譬如員工的出勤天數、交貨期的計算、付款日的計算等等。本文介紹了Excel自帶的用于計算工作日的NETWORKDAYS和WORKDAY函數,并指出了這兩個(gè)函數在實(shí)際應用中所存在的問(wèn)題,同時(shí)給出了用Excel自定義函數進(jìn)行相關(guān)計算的實(shí)現。 Excel自帶的工作日計算函數 Excel中自帶的工作日計算函數在“分析工具庫”中,要使用該類(lèi)函數必須選擇“加載宏”命令安裝“分析工具庫”。 ▲NETWORKDAYS函數 ▲WORKDAY函數 用Excel自定義函數實(shí)現工作日計算 值得注意的是,在實(shí)際應用中,對于元旦、春節、五一、國慶等,由于節假日調整的原因,有些周末也有可能被安排為工作日,因此在計算時(shí)也應該包括在工作日內。顯然,Excel自帶的兩個(gè)工作日計算函數沒(méi)有考慮到這一點(diǎn),實(shí)際計算時(shí)必然會(huì )帶來(lái)誤差。因此有必要用Excel中的VBA重新設計兩個(gè)對應的自定義函數,用以準確計算工作日。為了與Excel自帶的工作日計算函數相對應,這兩個(gè)自定義函數的參數采用了與前者類(lèi)似的形式。由于除周末外,其間可能還有國家法定的節假日,實(shí)際計算工作日數時(shí)要把這些節假日排除在外。為此在設計時(shí)使用了參數holidays來(lái)存放計算范圍內的所有法定節假日,并據此檢查以確定每個(gè)日期是不是工作日。另外,增加一個(gè)新的參數nonholidays,對應的是一個(gè)Excel中的區域,用以存放被調整為工作日的周末的日期,并據此檢查以確定每個(gè)日期是否非工作日。這兩個(gè)自定義函數的具體代碼如下,并以2006年春節期間的節假日為例計算此范圍內的工作日數。 |
聯(lián)系客服