3

在我工作的地方,我没有加班费,但我会为我工作的加班累积假期。我有以下电子表格,它计算我已经完成了多少加班并将其总计D15

现在我想根据每天 8 小时计算这是多少天。在D16中,我已经完成=D15/8并将其格式化为h.mm \d\a\y\s,但这显示为2.26 days而不是2.4375 days

使用的正确公式是D16什么?

在此处输入图像描述

4

3 回答 3

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"

如果工作日长度发生变化,更容易改变

于 2012-09-07T08:47:36.553 回答
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] 添加到完成时间)。

于 2012-09-11T23:57:30.657 回答
1

确保 D15 的数字格式为 [h]:mm 然后将 D16 设置为 =sum(D15/"8:00") 应该可以正常工作,这就是我跟踪我的年假的情况,我每周工作 37 小时,休假日为归类为 7h24m 或半天假为“3:42”

我已在电子表格的单元格 K2 中将其作为累积数字分配为 [h]:mm,然后我将 K3=SUM(K2/"7:24") 的天数格式化为一般数字

您可能还需要将 excel 中的日期基准更改为 1904 日期系统http://support.microsoft.com/kb/182247/en-gb 以使其正常工作(只有当您像我一样有负时间时才会出现问题计算弹性工时)

于 2014-11-21T16:28:45.827 回答