ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 想通过excel计算员工在特殊工作时间的加班时间

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-10-17 14:46 | 显示全部楼层 |阅读模式
假设工作时间为上午8:00-12:00和下午13:30-17:00。由于员工工作均需要出车在外,时间非常不稳定,故需要在特定的工作时间之外计算员工的加班时间(即除工作时间以外所有时间均为加班)。想要用excel公式计算出如下效果:

日期   出车  返车  上班时间  加班时间
9-1     8:00   13:00       5       1
9-2     7:30   14:00       6.5     2.5
..........
9-29   12:00  16:00       4       1.5
9-30   15:00   20:00      5       3
合计                   xx       xx   

之前用=(B2<TIME(8,,))*(TIME(8,,)-B2)*24来计算加班时间,但涉及午休的时间就发现太复杂,不知道该怎样计算,其他函数也不太懂,跪求高手指点指点~~~

TA的精华主题

TA的得分主题

发表于 2012-10-18 13:37 | 显示全部楼层
是比较复杂.用了辅助列(如果不嫌烦,也能用公式表达的),在K列输入时间,本贴后部内容.
=ROUND(TEXT(TIME(,TEXT(INDEX(FREQUENCY($K$1:$K$10,B2:C2),2)*10-10,"0;\0;0"),)+TEXT($B$7-B2,"h:m:s;\0;\0")+TEXT(C2-$E$7,"h:m:s;\0;\0"),"[m]")/60,1)
解释一下:
1.用frequency,求中午休息时间,算法用点不可靠,有10分钟误差.
2.用frequency求得的是个3维数组,用index取出中间值,就是出车时间段在中午休息时间的投影.
由于求得的是个数,乘以间隔10分钟,即为中午加班时间(分钟数),注意,-10,是考虑边界问题,也是第1点不可靠的地方.
同时考虑到中午0加班,再-10,导致time函数出错,因此用text强制负数时为0.
3.用text格式函数,把第2步求得的分钟数,转化为小时数
4.求上班前加班小时数.
5.求下班后加班小时数.并与第3和4步求和,即为总加班小时数
6.再用text函数,转化为分钟数.注意[m]的应用
7.用分钟数/60,即为小数型的小时数

12:01
12:10
12:20
12:30
12:40
12:50
13:00
13:10
13:20
13:29

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-10-18 16:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shuyee 发表于 2012-10-18 13:37
是比较复杂.用了辅助列(如果不嫌烦,也能用公式表达的),在K列输入时间,本贴后部内容.
=ROUND(TEXT(TIME(,TE ...

谢谢你的回复,本人第一次用excel做这种计算,您以上所说的我基本看不懂……
等待回复的时间我恶补了一下最基本的公式,用if貌似成功计算出加班的时间,虽然真心比较麻烦,但目测计算结果基本准确,您帮忙看一下看看有没需要调整的? Book1.rar (7.1 KB, 下载次数: 51)


TA的精华主题

TA的得分主题

发表于 2012-10-19 08:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-10-19 10:24 | 显示全部楼层
事实上2楼的公式是错的.抱歉{:soso_e127:}
下面这个是正确的.
第1个text,计算早上加班,第2个计算晚上加班,第3个计算中午加班,稍复杂些,要与中午上班班时间比较
=ROUND((TEXT(B2-"8:0:0","\0;[m];0")+TEXT(C2-"17:0:0","[m];\0;0")+TEXT(MIN(C2,"13:30:0")-MAX(B2,"12:0:0"),"[m];\0;0"))/60,1)

TA的精华主题

TA的得分主题

发表于 2018-7-29 18:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习,谢谢分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 21:27 , Processed in 0.030773 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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