ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 小小夏天天

[讨论] 年假计算公式

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-6 22:12 | 显示全部楼层
藕断丝莲 发表于 2015-1-4 11:32
请问这C3是指入职日期还是工龄??

当然是入职日期了^_^

TA的精华主题

TA的得分主题

发表于 2015-1-16 23:29 | 显示全部楼层
sunya_0529 发表于 2015-1-6 22:12
当然是入职日期了^_^

您好,我看您在论坛上面有写年休假处理公式的,我觉得很好,但是有个小问题我觉得解决不了。希望您指导。就是临界年的年休假处理,我们公司规定是:在临界点之前折算后取整数+临界点之后折算后取整,而不是直接折算后合计在取整,请问应该怎么处理?

TA的精华主题

TA的得分主题

发表于 2015-1-17 19:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mubing1289 发表于 2015-1-16 23:29
您好,我看您在论坛上面有写年休假处理公式的,我觉得很好,但是有个小问题我觉得解决不了。希望您指导。 ...

=SUM(INT(ABS(DATE(2012,MONTH(C3),DAY(C3))-DATE(2012+{0,1},1,1))*LOOKUP(DATEDIF(C3,DATE(2012,12,31),"y")-{1,0},{0,0;1,5;10,10;20,15})/SUM(DATE(2012+{1,0},1,1)*{1,-1})))

分别取整就调整一下括号的位置,然后如上图所示套上一个INT()取整函数即可。

如果是要取0.5的整数倍,则用INT(公式/0.5)*0.5;

如果是要取最接近0.5的整数倍,即小于等于0.5的进到0.5,大于0.5的进1,则用CEILING(公式,0.5)。

其他取整方式如4舍5入之类的,举一反三吧。

TA的精华主题

TA的得分主题

发表于 2015-1-18 09:22 | 显示全部楼层
sunya_0529 发表于 2015-1-17 19:51
=SUM(INT(ABS(DATE(2012,MONTH(C3),DAY(C3))-DATE(2012+{0,1},1,1))*LOOKUP(DATEDIF(C3,DATE(2012,12,31) ...

请问分别取整,然后再求和,这个INT应该放在什么位置阿?谢谢,实在太笨,研究不出来阿,感谢感谢

TA的精华主题

TA的得分主题

发表于 2015-1-18 10:46 来自手机 | 显示全部楼层
mubing1289 发表于 2015-1-18 09:22
请问分别取整,然后再求和,这个INT应该放在什么位置阿?谢谢,实在太笨,研究不出来阿,感谢感谢

上面的公式里用红色字体标出来了,你再仔细看看。

TA的精华主题

TA的得分主题

发表于 2015-1-18 23:16 | 显示全部楼层
sunya_0529 发表于 2015-1-18 10:46
上面的公式里用红色字体标出来了,你再仔细看看。

我看了的哦,可是我把公式套用以后,发现一个问题,虽然可以解决临界年前后分别取整的问题,但是其他的算出来应该为5天,10天或者15天都不对了,这个太奇怪了,我本想用您的一个公式就解决的,还能请您再看看? 年假公式.rar (24.14 KB, 下载次数: 30)

TA的精华主题

TA的得分主题

发表于 2015-1-20 15:36 | 显示全部楼层
mubing1289 发表于 2015-1-18 23:16
我看了的哦,可是我把公式套用以后,发现一个问题,虽然可以解决临界年前后分别取整的问题,但是其他的算 ...

我明白你的意思了,公式中对不需要折算的,用了INT()函数后反而把小数部分省掉了,刚好减掉了整一天。

建议你使用四舍五入取整法吧,这样结果相对准确一点:

=SUM(ROUND(ABS(DATE(2015,MONTH(B2),DAY(B2))-DATE(2015+{0,1},1,1))*LOOKUP(DATEDIF(B2,DATE(2015,12,31),"y")-{1,0},{0,0;1,5;10,10;20,15})/SUM(DATE(2015+{1,0},1,1)*{1,-1}),0))

TA的精华主题

TA的得分主题

发表于 2015-1-20 16:11 | 显示全部楼层
sunya_0529 发表于 2015-1-20 15:36
我明白你的意思了,公式中对不需要折算的,用了INT()函数后反而把小数部分省掉了,刚好减掉了整一天。

...

哦,好的,谢谢啦!!!

TA的精华主题

TA的得分主题

发表于 2015-3-5 21:02 | 显示全部楼层
sunya_0529 发表于 2015-1-6 22:12
当然是入职日期了^_^

楼主您好,上次问您请教了年休假的问题,很受益,感谢!现在又有问题要咨询你了,不知道是否可以?
是这样的,我用的2010版的office,在用excel的时候,我发现了一个问题,不知道用什么公式或者补丁可以解决?
在ROUND公式使用之后,就是都是两位的小数相减,可以为什么减完之后的结果,出来的是好多位的小数呀?

TA的精华主题

TA的得分主题

发表于 2015-3-6 11:59 | 显示全部楼层
mubing1289 发表于 2015-3-5 21:02
楼主您好,上次问您请教了年休假的问题,很受益,感谢!现在又有问题要咨询你了,不知道是否可以?
是这 ...

这个是内存运算的规则造成的,不算是BUG的BUG,浮点运算会出现这样的问题。你可以在整个公式外面再套一个ROUND函数来解决这个问题
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 23:58 , Processed in 0.040129 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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