資源描述:
《用excel表計(jì)算員工工齡方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、“工齡”是人事管理和勞資管理中經(jīng)常涉及到的一項(xiàng)重要內(nèi)容,員工的職務(wù)升遷、薪資和各種福利想必都與之有關(guān)吧!這個(gè)“東東”可千萬不能算錯(cuò),不然會(huì)有人來找麻煩喲! 若只需要大致計(jì)算出幾名員工的工齡或許按按計(jì)算器就能搞定了,但若需要準(zhǔn)確計(jì)算出成百上千名員工的工齡,恐怕就……沒關(guān)系,別忘了你手頭還有強(qiáng)大的Excel! 工齡好算嗎 在Excel里,將兩個(gè)日期值相減,即可得出其中間隔的天數(shù)(以序列數(shù)表示),但這個(gè)數(shù)字并不是我們所需要的最終結(jié)果。你能說,“XXX的工齡是3721天”嗎?當(dāng)然不行。所以,我們需要的是“XX年XX月XX天”這樣的格式,而
2、不是單純的“XXXX天”。 既然要求已經(jīng)提出來了,那么該如何進(jìn)行計(jì)算呢?有朋友可能要說了,這還不簡單?把前面得到的天數(shù)除以365,不就是年數(shù)了?其余數(shù)除以30,不就是月數(shù)了?再剩下的,就是天數(shù)嘛。當(dāng)然,這樣的算法可以大致計(jì)算出我們需要的數(shù)字,但不準(zhǔn)確。因?yàn)?,一年并不都?65天,一個(gè)月也并不都是30天,所以這種算法存在著相當(dāng)?shù)恼`差,而在某些特殊的日期下,誤差可能相差一個(gè)月!不信的話自己試試?! ±霉剿愎g 想要算得既快又準(zhǔn),在Excel里還真不是三五個(gè)公式就能解決的,以至于有了下面這個(gè)自定義的公式Elapsed()。源代碼(加注
3、釋)已在文末附上,了解VBA的朋友可以看看,不知道VBA的朋友大可按說明“復(fù)制”—“粘貼”后,其他的事放到腦后去好了。下面先來講一講它的用法?! D1 Elapsed(StartDate,EndDate,ReturnType)帶有三個(gè)參數(shù):依次為開始日期、結(jié)束日期和返回類型。大家只需在使用時(shí)依次給出相應(yīng)參數(shù)值,函數(shù)就會(huì)自動(dòng)計(jì)算出以年、月、天表示的兩日期間間隔的天數(shù)。ReturnType有三個(gè)參選項(xiàng),“1”表示返回年數(shù),“2”表示月數(shù),“3”表示天數(shù),因?yàn)槊看沃荒苓x擇其中一種參選項(xiàng),所以別指望Elapsed()一次就為你干完所有的活兒!
4、 工齡的計(jì)算方法 介紹完Elapsed(),我們?cè)賮砜纯淳唧w的計(jì)算方法吧?! 〖僭O(shè)已有一工作表中(見圖1)記錄了各員工的入公司日期,需要計(jì)算截止今日時(shí)的工齡期,我們可以先用公式計(jì)算今日的日期值,這樣的話到了明天也就不必重算了。我們往C2單元格中輸入公式“=TODAY()”,這是取計(jì)算機(jī)的當(dāng)前系統(tǒng)日期值?! 〖僭O(shè)各員工的入公司日期都記錄在C列中,則我們通過D、E、F三列來分別計(jì)算工齡的年數(shù)、月數(shù)和天數(shù)。以第6行的“張三”為例,D6、E6、F6中的公式分別為“=Elapsed($C6,$C$2,1)”、“=Elapsed($C6,$C$
5、2,2)”、“=Elapsed($C6,$C$2,3)”。接著在G6中用公式將上面計(jì)算的結(jié)果轉(zhuǎn)換成易于理解的文本形式。這個(gè)公式就可以自由發(fā)揮了,您可以按自己的喜好進(jìn)行設(shè)置。如:“=IF(D6=0,IF(E6=0,″未滿一個(gè)月″,E6&″個(gè)月″),IF(E6=0,D6&″年整″,D6&″年″&″零″&E6&″個(gè)月″))”——這個(gè)公式舍棄了不常用到的“天數(shù)”,并對(duì)0年或0個(gè)月這樣較特殊的計(jì)算結(jié)果進(jìn)行了更人性化的轉(zhuǎn)換?! ∽詈笠龅?,就是將D6、E6、F6、G6抹黑,往下拖曳,進(jìn)行公式的復(fù)制。 到此,所有員工的工齡全部都計(jì)算完畢了! 源程
6、序代碼新建一個(gè)EXCEL表格中,視圖工具欄VISUALBASIC FunctionElapsed(StartDateAsDate,EndDateAsDate,ReturnTypeAsInteger) DimStartYearAsInteger'定義變量用以參數(shù)中開始日期的計(jì)算 DimStartMonthAsInteger DimStartDayAsInteger DimEndYearAsInteger'定義變量用以參數(shù)中結(jié)束日期的計(jì)算 DimEndMonthAsInteger DimEndDayAs
7、Integer StartYear=Year(StartDate)'從參數(shù)中取得開始日期和結(jié)束日期的年數(shù),月數(shù),天數(shù) StartMonth=Month(StartDate) StartDay=Day(StartDate) EndYear=Year(EndDate) EndMonth=Month(EndDate) EndDay=Day(EndDate) IfEndDay8、eSerial(EndYear,EndMonth+1,EndDay)-DateSerial(EndYear,EndMonth,EndDay)) EndMonth=EndMonth-1'……從月數(shù)中