资源描述:
《用excel表计算员工工龄方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、“工龄”是人事管理和劳资管理中经常涉及到的一项重要内容,员工的职务升迁、薪资和各种福利想必都与之有关吧!这个“东东”可千万不能算错,不然会有人来找麻烦哟! 若只需要大致计算出几名员工的工龄或许按按计算器就能搞定了,但若需要准确计算出成百上千名员工的工龄,恐怕就……没关系,别忘了你手头还有强大的Excel! 工龄好算吗 在Excel里,将两个日期值相减,即可得出其中间隔的天数(以序列数表示),但这个数字并不是我们所需要的最终结果。你能说,“XXX的工龄是3721天”吗?当然不行。所以,我们需要的是“XX年XX月XX天”这样的格式,而
2、不是单纯的“XXXX天”。 既然要求已经提出来了,那么该如何进行计算呢?有朋友可能要说了,这还不简单?把前面得到的天数除以365,不就是年数了?其余数除以30,不就是月数了?再剩下的,就是天数嘛。当然,这样的算法可以大致计算出我们需要的数字,但不准确。因为,一年并不都是365天,一个月也并不都是30天,所以这种算法存在着相当的误差,而在某些特殊的日期下,误差可能相差一个月!不信的话自己试试。 利用公式算工龄 想要算得既快又准,在Excel里还真不是三五个公式就能解决的,以至于有了下面这个自定义的公式Elapsed()。源代码(加注
3、释)已在文末附上,了解VBA的朋友可以看看,不知道VBA的朋友大可按说明“复制”—“粘贴”后,其他的事放到脑后去好了。下面先来讲一讲它的用法。 图1 Elapsed(StartDate,EndDate,ReturnType)带有三个参数:依次为开始日期、结束日期和返回类型。大家只需在使用时依次给出相应参数值,函数就会自动计算出以年、月、天表示的两日期间间隔的天数。ReturnType有三个参选项,“1”表示返回年数,“2”表示月数,“3”表示天数,因为每次只能选择其中一种参选项,所以别指望Elapsed()一次就为你干完所有的活儿!
4、 工龄的计算方法 介绍完Elapsed(),我们再来看看具体的计算方法吧。 假设已有一工作表中(见图1)记录了各员工的入公司日期,需要计算截止今日时的工龄期,我们可以先用公式计算今日的日期值,这样的话到了明天也就不必重算了。我们往C2单元格中输入公式“=TODAY()”,这是取计算机的当前系统日期值。 假设各员工的入公司日期都记录在C列中,则我们通过D、E、F三列来分别计算工龄的年数、月数和天数。以第6行的“张三”为例,D6、E6、F6中的公式分别为“=Elapsed($C6,$C$2,1)”、“=Elapsed($C6,$C$
5、2,2)”、“=Elapsed($C6,$C$2,3)”。接着在G6中用公式将上面计算的结果转换成易于理解的文本形式。这个公式就可以自由发挥了,您可以按自己的喜好进行设置。如:“=IF(D6=0,IF(E6=0,″未满一个月″,E6&″个月″),IF(E6=0,D6&″年整″,D6&″年″&″零″&E6&″个月″))”——这个公式舍弃了不常用到的“天数”,并对0年或0个月这样较特殊的计算结果进行了更人性化的转换。 最后要做的,就是将D6、E6、F6、G6抹黑,往下拖曳,进行公式的复制。 到此,所有员工的工龄全部都计算完毕了! 源程
6、序代码新建一个EXCEL表格中,视图工具栏VISUALBASIC FunctionElapsed(StartDateAsDate,EndDateAsDate,ReturnTypeAsInteger) DimStartYearAsInteger'定义变量用以参数中开始日期的计算 DimStartMonthAsInteger DimStartDayAsInteger DimEndYearAsInteger'定义变量用以参数中结束日期的计算 DimEndMonthAsInteger DimEndDayAs
7、Integer StartYear=Year(StartDate)'从参数中取得开始日期和结束日期的年数,月数,天数 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'……从月数中