Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4904|回复: 13

[已解决]怎么计算员工年假天数

[复制链接]
发表于 2015-4-18 09:25 | 显示全部楼层 |阅读模式
大虾们,我来请教了!
    公司年假规定如下:
    员工工作满1年不满10年,休5天;满10年不满20年,休10天;20年以上休15天。
    另外,如果小王于2014年2月14日进新单位上班,到2015年2月13日,连续工作满12个月,就应该休年假了,但2015年可休的天数,按照规定计算公式为:(当年度在本单位剩余日历天数÷365天)×职工本人全年应当享受的年休假天数
    按以上时间为例,2015年的剩余日历天数为231天,那小王可休年假天数为:321/365*5=4.3天 (四舍五入即为4天)

现要统计公司所有员工分别本年度年假的天数,怎么设置成公式呢?
请帮忙,多谢了~~~

最佳答案
2015-4-18 12:36
是我沒有考慮周到.我再改改.=ROUND(IF(YEAR(B2)=YEAR(NOW()),0,IF(NOW()-B2>3650,10,IF(YEAR(NOW())=YEAR(C2),(DATE(YEAR(C2)+1,1,1)-C2)/365*5,5))),0)

年假计算.rar

6.73 KB, 下载次数: 28

发表于 2015-4-18 09:52 | 显示全部楼层
=IF(NOW()-B3>3650,10,IF(NOW()-B3>366,5,IF(NOW()-B3=365,(DATE(YEAR(NOW()),1,1)-NOW())*5,0)))

複本 Xl0000192.rar

4.07 KB, 下载次数: 17

回复

使用道具 举报

发表于 2015-4-18 10:12 | 显示全部楼层
本帖最后由 文轩馨婷 于 2015-4-18 12:48 编辑

更新一下.....
  1. =IF(YEAR(TODAY())-YEAR(B4)=1,ROUND(DATEDIF(B4,DATE(YEAR(B4),12,31),"yd")/365*LOOKUP(DATEDIF(B4,TODAY(),"y"),{1,10,20;5,10,15}),0),LOOKUP(DATEDIF(B4,TODAY(),"y"),{0,1,10,20;0,5,10,15}))
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-4-18 11:28 | 显示全部楼层
心正意诚身修 发表于 2015-4-18 09:52
=IF(NOW()-B3>3650,10,IF(NOW()-B3>366,5,IF(NOW()-B3=365,(DATE(YEAR(NOW()),1,1)-NOW())*5,0)))

谢谢你,但是你的公式虽然满足了前面的计算需要,但是下面的问题没有解决呢:
    如果小王于2014年2月14日进新单位上班,到2015年2月13日,连续工作满12个月,就应该休年假了,但2015年可休的天数,按照规定计算公式为:(当年度在本单位剩余日历天数÷365天)×职工本人全年应当享受的年休假天数
    按以上时间为例,2015年的剩余日历天数为231天,那小王可休年假天数为:321/365*5=4.3天 (四舍五入即为4天)。
上面这种问题能同时在公式中设置解决吗?非常感谢!嘿嘿
回复

使用道具 举报

发表于 2015-4-18 11:44 | 显示全部楼层
剛才沒在..我之前算是的.開始算年假的時間是以當日開始算的.也就是以今天的2015-4-18開始算的.你的意思是以C列的日期開始計算嗎?
回复

使用道具 举报

 楼主| 发表于 2015-4-18 11:55 | 显示全部楼层
心正意诚身修 发表于 2015-4-18 11:44
剛才沒在..我之前算是的.開始算年假的時間是以當日開始算的.也就是以今天的2015-4-18開始算的.你的意思是以 ...

2013年前(包括)2013年入职的肯定用你提供的这个公式没问题。
但是如果是2014年入职的,那么也可以说他享受年假的日期以C列开始算,且截至日期为2015年12月31日。比如某人2014年6月1日进公司,那么他能享受年假天数肯定是2015年6月1日至2015年12月31日,约2.5天吧。
不知道我表达清楚没?呵呵,万分感谢!
回复

使用道具 举报

发表于 2015-4-18 12:03 | 显示全部楼层
=ROUND(IF(A2="","",IF(NOW()-B2>3650,10,IF(YEAR(NOW())=YEAR(C2),(DATE(YEAR(C2)+1,1,1)-C2)/365*5,5))),0),這個看可以不
回复

使用道具 举报

 楼主| 发表于 2015-4-18 12:18 | 显示全部楼层
心正意诚身修 发表于 2015-4-18 12:03
=ROUND(IF(A2="","",IF(NOW()-B2>3650,10,IF(YEAR(NOW())=YEAR(C2),(DATE(YEAR(C2)+1,1,1)-C2)/365*5,5))), ...

好厉害,这个解决了我刚刚说的那个问题,但是又出现了新问题,比如说2015年入职的人,按照你这个公式出来会显示有5天年假,但实际上2015年入职的人在2015年是不能享受年假的。感觉好复杂的样子,千万别嫌我烦呀。
回复

使用道具 举报

发表于 2015-4-18 12:36 | 显示全部楼层    本楼为最佳答案   
是我沒有考慮周到.我再改改.=ROUND(IF(YEAR(B2)=YEAR(NOW()),0,IF(NOW()-B2>3650,10,IF(YEAR(NOW())=YEAR(C2),(DATE(YEAR(C2)+1,1,1)-C2)/365*5,5))),0)
回复

使用道具 举报

发表于 2015-4-18 12:50 | 显示全部楼层
心正意诚身修 发表于 2015-4-18 12:36
是我沒有考慮周到.我再改改.=ROUND(IF(YEAR(B2)=YEAR(NOW()),0,IF(NOW()-B2>3650,10,IF(YEAR(NOW())=YEAR(C ...

乘以5....也有局限(有5天,也有10天,还有15天)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 05:36 , Processed in 0.676649 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表