ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

年假统计公式(紧急求助)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-1 16:17 | 显示全部楼层 |阅读模式
单位对于年假的规定比较复杂,本人想编个公式,方便统计。无奈excel用的不好,请各位大侠帮我写下公式。
请看附件,休假规则附件里有写。谢谢各位!

年假统计表.rar

12.86 KB, 下载次数: 108

TA的精华主题

TA的得分主题

发表于 2009-12-1 17:06 | 显示全部楼层
方法有好几种,例如:全部采用IF嵌套函数
或使用Vlookup结合IF函数
或使用VBA来自定义函数

TA的精华主题

TA的得分主题

发表于 2009-12-1 17:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Function WorkDate(A As Range, B As Range)
  If A < 10 Then
    Select Case B
    Case Is <= 2
      WorkDate = 5
    Case Is <= 4
      WorkDate = 6
    Case Is <= 6
      WorkDate = 7
    Case Is < -8
      WorkDate = 8
    Case Is >= 9
      WorkDate = 9
    End Select
  ElseIf A >= 10 And A < 20 Then
    Select Case B
    Case Is <= 2
      WorkDate = 10
    Case Is <= 4
      WorkDate = 11
    Case Is <= 6
      WorkDate = 12
    Case Is < -8
      WorkDate = 13
    Case Is >= 9
      WorkDate = 14
    End Select
  Else
    WorkDate = 15
  End If
  Application.Volatile
End Function

自定义函数在计算的数据量不大比较好用,但数据量极大是会做恶梦的(运行太慢)

[ 本帖最后由 杨成云 于 2009-12-1 17:27 编辑 ]

年假统计表.rar

18.7 KB, 下载次数: 272

TA的精华主题

TA的得分主题

发表于 2009-12-2 09:53 | 显示全部楼层
一开始被你的datedif函数弄迷糊了。后来总算是看懂了,哈哈。我用嵌套公式做的,已经到嵌套的最大层数了,再多加一个条件都不可能了。

年假统计表.rar

14.69 KB, 下载次数: 64

TA的精华主题

TA的得分主题

发表于 2009-12-2 12:51 | 显示全部楼层
试着做了一个,看看好不好用。

H2的公式:
=CEILING(IF(C2>19,15,IF(C2=0,0,IF(G2=0,(DATE(2009,12,31)-D2)/365,1)*LOOKUP(G2,{0,5;3,6;5,7;7,8;9,9})+(C2>9)*5)),0.5)

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-12-2 12:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢大家啊。帮我大忙了呵呵!真好

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-12-4 17:15 | 显示全部楼层
原帖由 wlmhit903 于 2009-12-2 09:53 发表
一开始被你的datedif函数弄迷糊了。后来总算是看懂了,哈哈。我用嵌套公式做的,已经到嵌套的最大层数了,再多加一个条件都不可能了。




回去用了这个公式,发现还有一层没法满足。当工作年份在10年以上,但是入司时间小于1年时,应该是“剩余日历数/365*10”。这层没体现出来,再加一层不行了,怎么办呢?
我筛选了有问题的,打包了。大仙,帮我再看看,嘿嘿。

11月年假公式计算1115.rar

21.12 KB, 下载次数: 48

TA的精华主题

TA的得分主题

发表于 2009-12-8 13:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 antimelody1983 于 2009-12-4 17:15 发表




回去用了这个公式,发现还有一层没法满足。当工作年份在10年以上,但是入司时间小于1年时,应该是“剩余日历数/365*10”。这层没体现出来,再加一层不行了,怎么办呢?
我筛选了有问题的,打包了。大仙,帮 ...



你的条件里 满10年不到20年的,入职当年到第二年都是10天, 应该是不考虑小于1年的。可能是我对题意理解有误?或者你的条件应该是满一年到第二年的10天,不足一年的按照日期计算。另外剩余日历数好像不太对,我公式里体现的是当年已工作日历数,还需要改动一下。剩余日历数应该是 datedif(E1,year(G1)&"-12-31","d"),你看哪种合适。

[ 本帖最后由 wlmhit903 于 2009-12-8 13:46 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-12-8 13:53 | 显示全部楼层
今天上传不了附件,公式拷出来吧。

=IF(D30>=20,15,IF(D30>=10,IF(H30>=9,14,IF(H30>=7,13,IF(H30>=5,12,IF(H30>=3,11,IF(H30=0,10*DATEDIF(E30,G30,"d")/365,10))))),IF(H30>=9,9,IF(H30>=7,8,IF(H30>=5,7,IF(H30>=3,6,IF(H30=0,5*DATEDIF(E30,G30,"d")/365,5)))))))

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-12-10 09:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼上,这回好了。ok了。太强了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 03:36 , Processed in 0.038495 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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