我有一个有趣的问题,我真的很难解决,并且觉得这应该可以通过某种方式使用 SUMIFS 来实现!
我有以下内容(如图所示):
我有许多任务需要在不同的日子完成。每个任务都有单独的行,并且每个任务都有特定的持续时间。
在“第 1 天”,我在 C 列中输入第一个任务的持续时间,它会自动计算出 D 列的答案(简单来说 B+C=D)。
- 任务 1:09:00 - 09:30
在“第二天”,我有三个任务要完成:
- 任务 1:09:00 - 10:00
- 任务 2:10:00 - 12:00
- 任务 3:12:00 - 22:00
我想在第二个表格(FH)中计算出工作时间内(09:00 到 17:00 之间)的总小时数以及工作时间外(09:00-17:00 以外的小时数)的总小时数,如 G 列和 H 列所示。
F 列的公式提取所有唯一的日期数字:
=IFERROR("" & INDEX($A$3:$A$12, MATCH(0,COUNTIF($F$1:F1, $A$3:$A$12), 0)),"")
答案1
现在,我已通过添加一个额外的辅助列来解决这个问题,该辅助列允许我计算非工作时间方面。然后,我可以对非工作时间总数进行求和,并得到工作时间答案,我只需从总小时数中减去非工作时间结果即可。
计算我的下班时间的公式(可能是一种更优雅的方式......) - 例如使用 E 列作为我的辅助列:
=SUM(IF(D3<TIME(9,0,0),D3-B3,IF(B3<TIME(9,0,0),TIME(9,0,0)-B3,0)),IF(B3>TIME(17,0,0),D3-B3,IF(D3>TIME(17,0,0),D3-TIME(17,0,0),0)))
计算“天数”(F 列):
=IFERROR("" & INDEX($A$3:$A$12, MATCH(0,COUNTIF($F$1:F1, $A$3:$A$12), 0)),"")
为了计算小时数(G 列),我也将其四舍五入到最接近的 2:
=IF((SUMIF($A$2:$A$12,F2,$C$2:$C$12)*24)=0,"",CEILING((SUMIF($A$2:$A$12,F2,$C$2:$C$12)*24)-H2,2))
要计算小时数(H 列):
=IF((SUMIF($A$2:$A$12,F2,$E$2:$E$12)*24)=0,0,SUMIF($A$2:$A$12,F2,$E$2:$E$12)*24)