|
早在office2003时代,excel就内置了一个非常强大实用的时间日期计算函数networkdays(需要加载分析工具库方可使用),利用这个函数可以很方便的计算任意两个日期之间存在多少个工作日,而且可以利用定义名称序列或者添加日期的方式来自行定义法定节日,2008年,《机关事业单位工作人员带薪年休假实施办法》规定国家法定假日不计入年休假假期以来,我就一直依靠这个函数对统计计算单位工作人员休假时间,准确、方便而又快捷。
唯一美中不足的地方在于调休的计算问题,以2011年春节为例,2月2日至2月8日属于国家法定假日,可以通过定义序列名称的方式从工作日中剔除出来,但是对于调休后1月30日(星期日)和2月12日(星期六)在函数里面还是认定为休息日而予以剔除,不能列入工作日,这样就造成休假日期计算不准确,必须手工进行调整计算。到了office2010时代,增加了一个非常有用的函数networkdays.intl函数,可以自行指定星期几是休息日,然后计算工作日,这对银行或者卖场等非星期六星期天休息的企业无疑是非常有用的,但是对我来说,还是不能实现目的。
直到昨天,当我准备制作新一年工作人员休假统计表格的时候,终于找到了一个新的方法,那就是利用数组公式和networkdays来计算年休假天数:
首先根据《国务院办公厅关于2011年部分节假日安排的通知》(国办发明电〔2010〕40号)精神,现将2011年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排,分别把国家法定假日和调休日列表并定义名称为“假日”和“调休”,然后按照以往的方式编辑networkdays函数公式计算工作日,语法是:NETWORKDAYS(开始日期, 结束日期, "假日"])。然后在后面加上调休的日期,格式是:SUM((调休<=开始日期)*(结束日期<=调休))。如果用普通的公式录入的话,虽然公式显示正常,但实际上无法得出准确工作日的,需要在编辑完公式以后按下shift+ctrl+enter编辑为数组公式(公式呈“{}”包围显示)。
验证一下:假设某人自2月1日(周一)休假,至2月2日(周二)结束,那么休假日期显示为1天(因为2月2日是春节法定假日);若自2月1日至2月11日结束,则休假天数为4天(2月2日至8日为春节法定假日);若2月1日至2月12日(周六)结束,则休假天数为5天(因为虽然2月12日至周六,但已经调休,计算为工作日);若2月1日至2月13日结束,则休假依然为5天,因为2月13日为周日。
经过验证,该数组公式有效。再利用if函数根据工龄判断应休假天数,利用vlookup函数对个人休假审批权限进行查找判断,不多时,即可完成一个完整准备的机关事业单位工作人员休假统计表格。 |
评分
-
2
查看全部评分
-
|