是比较复杂.用了辅助列(如果不嫌烦,也能用公式表达的),在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
|