我工作的地方我没有加班费,但是我加班加点工作。我有以下电子表格,用于计算我已完成的加班时间,并在D15
中计算总计。
现在我想基于每天8小时来计算这是多少天。在D16
中,我完成了=D15/8
并将其格式化为h.mm \d\a\y\s
,但这显示为2.26 days
而不是2.4375 days
。
D16
中使用的正确公式是什么?
答案 0 :(得分:5)
读者注意:这个问题导致了多个解决方案,其中一些在评论中讨论过。以下是找到的解决方案的摘要。
第一个解决方案
=(HOUR(D15)+MINUTE(D15)/60)/8
<强>解释强>
Excel中的日期和时间存储为序列号,因此19:30
实际上是0.8125
。
因此,如果将其除以8
,您将获得0.1015625
后一个值值2.26 days
OP的版本(感谢Danny Becket(OP)) - 请参阅以下评论。
该解决方案现在处理小时数> 24。
=((DAY(D20)*24)+HOUR(D20)+(MINUTE(D20)/60))/8
或更好(信用到Barry Houdini):
=((INT(D20)*24)+HOUR(D20)+(MINUTE(D20)/60))/8
前一个公式对大值有限制,可能在这里不相关但如果D20
是800:00那么你会得到错误的答案(7天而不是100天)。这可能是因为DAY
函数为您提供日历日,该日历将在31处“重置”,最好使用INT
代替DAY
。
另一个易于理解的版本
除以时间长度作为时间值:
=D15/"8:00"
如果工作日的长度发生变化,则更容易更改
答案 1 :(得分:2)
输入:
在B3
8:3 中
在C3
16:3 中
在D3
=IF(B3<C3,C3-B3-1/3,2/3-B3+C3)
选择B3:D3
,格式为hh:mm
,然后根据需要进行复制。
求和ColumnD
并将*3
追加到公式中,但格式为数字。
根据需要覆盖ColumnB
和/或ColumnC
中的单元格来添加数据(默认值不添加到总计)。
应对加班到下一个常规开始时间(即包括过去的午夜,新的序列号)。 1/3
因为标准工作日是8小时(24小时是日期序列计数器的统一)。 B3
和C3
可能是硬编码的,但(i)没有必要,(ii)允许更多的灵活性。如果要轻易识别非标准的开始/结束可以使用条件格式。
不解决周末加班问题,但可以很容易地进行调整(例如,添加专栏,在额外的专栏中标记周末日8,然后将8 [1/3]加到完成时间)。
答案 2 :(得分:1)
确保D15的数字格式为[h]:mm 那么D16为= sum(D15 /&#34; 8:00&#34;)应该可以正常工作 多数民众赞成我跟踪我的年假,我工作37小时,休假日被归类为7h24m或半天休假作为&#34; 3:42&#34;
我假设在电子表格的单元格K2中指定为[h]:mm的累积数字 然后我将K3 = SUM(K2 /&#34; 7:24&#34;)格式化为一般数字的天数
您可能还需要将Excel中的日期数据更改为1904日期系统http://support.microsoft.com/kb/182247/en-gb 让这个工作(如果你在计算弹性小时数时有负面的时间,那只会出现问题)