ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第124期]计算年休天数[已结]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-11-21 11:08 | 显示全部楼层 |阅读模式
本帖最后由 delete_007 于 2018-12-23 15:44 编辑

计算年休天数<函数题>     

以入职日期起计算到当前的工龄时长,并分设为8档
      
入职时长
不满1年
满1年
满3年
满5年
满7年
满10年
满12年
满15年及以上
年休天数
0
5
7
9
12
15
17
20

      计算方法: 年休天数等于    入职时长到今年 达新一档的,以对年对月对日 到年底的实际天数 与365的比值 再乘上新一档的年标准天数
                       加 上 年初起 至 达新档前的日期天数 与 365的比值 再乘上 前一档的年休标准天数 。
                       达新档的当年的年休天数 必须分两段计算 。
                       一年按 365 天计算(不考虑闰年),分母 365 不论在那个年度 都不变。
                    
                      以系统年份的 12月31日为年休计算时点

       要求:      纯函数公式方计算,版本不限。
                      C 列是模拟值,不可引用。
                      年休的天数 必须是 四舍五入的整数。
                      请在 D 列写公式,除 C 列以外的数据皆可引用

       评分:     含等号字符数<=100的正确答案,评1技术分;其他正确答案给予适当财富奖励。

  竞赛日期:2018-11-21至2018-12-20  
题目设置完毕,请作者不要编辑,如需修改,请与我联系。




    今天开题 ,评分在 3楼 ,如有异议请私信给我。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

18

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-21 11:22 | 显示全部楼层
先上一个答案(80字):
  1. =ROUND(SUM(LOOKUP(IFERROR(DATEDIF(B2,"1-1"+ROW($1:$365)-1,"m"),),H$3:O$4)/365),)
复制代码

(73字):
  1. =ROUND(SUM(IFNA(LOOKUP(("1-1"+ROW($1:$365)-1-B2)/30.417,H$3:O$4),)/365),)
复制代码

评分

11

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-21 11:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 丢丢表格 于 2018-12-21 12:40 编辑

这里所选入的公式: 在每位ID 中先选正确的,再从正确中选最短的

   如有异义议,请私信给我。

  分两段算是个坑,公式字数一定超出的,但是这种计算方式最符合题意。

  个税法公式可满足任何年份, 日积法 误差略大,按题意为正确。(VBA 测试通过即可)

  再次感谢 007 老师的大力支持 和 各位老师的热情参与!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-21 12:47 | 显示全部楼层
本帖最后由 micch 于 2018-12-20 09:47 编辑
  1. =ROUND(SUM(LOOKUP("1-1"+ROW($1:$365)-1,EDATE(B2,TEXT(H$3:O$3,"0;;-99")),H$4:O$4)/365),)
复制代码
再换个方式试试
  1. =ROUND(SUM(LOOKUP(IFERROR(DATEDIF(B2,"1-1"+ROW($1:$365)-1,"m"),),H$3:O$4)/365),)
复制代码
  1. =ROUND(SUM(IFNA(LOOKUP("1-1"+ROW($1:$365)-1,EDATE(B2,--H$3:O$3),H$4:O$4),)/365),)
复制代码


闰年的问题被自己弄糊涂了,试试做个闰年能用的,实在缩不短了
  1. =ROUND(SUM(LOOKUP(IFERROR(DATEDIF(B2,ROW(INDIRECT("1-1"/1&":"&"12-31"/1)),"m"),),H$3:O$4)/("12-31"-"1-1"+1)),)
复制代码

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-21 16:27 | 显示全部楼层
本帖最后由 袁勇 于 2018-11-27 16:04 编辑
  1. =ROUND(SUM(ABS("1-1"+{0,365}-TEXT(B2,"m-d"))*LOOKUP(YEARFRAC(B2,"1-1"+{0,363})*12,H$3:O$4))/365,)
复制代码


TEXT(B2,"m-d"),这个不能通用于平年闰年。YEARFRAC这个有误差。以上公式不适合。

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-21 21:39 | 显示全部楼层
本帖最后由 sayhi95 于 2018-11-27 23:30 编辑

短的貌似都有BUG
  1. =ROUND(SUM(IFERROR(LOOKUP(DATEDIF(B2+{365,0},YEAR(NOW())&"-12-31","m"),H$3:O$4),)*(DATE(YEAR(B2),{1,13},1)-B2)*{-1,1}/365),)
复制代码
  1. =ROUND(SUM(IFNA(LOOKUP(DATE(YEAR(NOW()),{1;13},0),EDATE(B2,L$3:S$3*1),L$4:S$4),)*(DATE(YEAR(B2),{1;13},1)-B2)*{-1;1}/365),)
复制代码
只有这个长的才经得起考验,汗~
  1. =ROUND(SUM(IFERROR(LOOKUP(DATEDIF(B2+{365,0},YEAR(NOW())&"-12-31","m"),H$3:O$4),)*(DATE(YEAR(NOW()),{1,13},1)-DATE(YEAR(NOW()),MONTH(B2),DAY(B2)))*{-1,1}/365),)
复制代码
终于拨云见日了
  1. =ROUND(SUM(IFERROR(LOOKUP(DATEDIF(B2+1,"1/1"+ROW($1:$365),"M"),H$3:O$4),)/365),)
复制代码

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-22 09:03 | 显示全部楼层
本帖最后由 江苏永能朱兴华 于 2018-12-15 15:03 编辑

第一次参与,水平有限:

=ROUND(SUM(TEXT("1-1"-EDATE(B2,I$3:O$3-12),"[<]!0;[>365]365;0")*(I$4:O$4-H$4:N$4)/365),)
=ROUND(SUM(TEXT(EDATE("12-31",-I$3:O$3)-B2+1,"[<]!0;[>365]365;0")*(I$4:O$4-H$4:N$4)/365),)
=ROUND(SUM(TEXT("12-31"-EDATE(B2-1,I$3:O$3/1),"[<]!0;[>365]365;0")*(I$4:O$4-H$4:N$4)/365),)

感到凌乱都不知道正确的答案,就多给几个吧。











评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-22 10:23 | 显示全部楼层
本帖最后由 掉智商の考拉 于 2018-11-23 08:49 编辑

=SUM((((YEAR(NOW())-YEAR(B2))*12-O$3:V$3)>0)*{0,5,2,2,3,3,2,3})+ROUND(IFNA(INDEX({0,5,2,2,3,3,2,3},MATCH((YEAR(NOW())-YEAR(B2))*12,O$3:V$3,)),0)*(DATE(YEAR(B2)+1,1,1)-B2)/365,)

测试了一下答案没问题哇,也许是昨天更改了表,引用位置不太对?
=SUM(((DATE(YEAR(NOW())+1,1,1)-B2)/365*12>O$3:V$3)*{0,5,2,2,3,3,2,3})-ROUND(SUM(TEXT(((DATE(YEAR(NOW())+1,1,1)-B2)/365-{0,1,3,5,7,10,12,15}-1),"[<-1]!0;[<0]G/通用格式;!0")*{0,5,2,2,3,3,2,3}),)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-22 13:18 | 显示全部楼层
掉智商の考拉 发表于 2018-11-22 10:23
=SUM((((YEAR(NOW())-YEAR(B2))*12-O$3:V$3)>0)*{0,5,2,2,3,3,2,3})+ROUND(IFNA(INDEX({0,5,2,2,3,3,2,3},M ...

=SUM(((DATE(YEAR(NOW())+1,1,1)-B2)/365*12>L$3:S$3)*{0,5,2,2,3,3,2,3})-ROUND(SUM(TEXT(((DATE(YEAR(NOW())+1,1,1)-B2)/365-{0,1,3,5,7,10,12,15}-1),"[<-1]!0;[<0]G/通用格式;!0")*{0,5,2,2,3,3,2,3}),)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-22 16:34 | 显示全部楼层
本帖最后由 袁勇 于 2018-11-23 14:44 编辑

删除此楼层。         

评分

3

查看全部评分

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

本版积分规则

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

GMT+8, 2024-3-29 13:48 , Processed in 0.052839 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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