【发布时间】:2019-06-14 12:18:26
【问题描述】:
我有一个 .XLXS 表,其中包含工人姓名、开始时间和结束时间。我想在忽略重叠时间段的情况下显示工人的总工作时间。 例如,如果“Bob”从 0800 到 1400 工作并且也在 0900 到 1300 工作,那么他当天的总时间应该是 6 小时。如果“乔”在 0700 到 0900 工作,他当天的时间是 2 小时。
工作人员的数量各不相同,六个月的数据约为 2100 行。
“barry houdini”到“Formula that will calculate total hours in overlapping date array”提供的公式适用于一名工人,但我对 Excel 的了解还不够,无法使其对多名工人进行排序。
=SUMPRODUCT((COUNTIFS(B:B,"<"&MIN(B:B)+ROW(INDIRECT("1:"&ROUND((MAX(C:C)-MIN(B:B))*1440,0)))/1440-1/2880,C:C,">"&MIN(B:B)+ROW(INDIRECT("1:"&ROUND((MAX(C:C)-MIN(B:B))*1440,0)))/1440-1/2880)>0)+0)/60
MOD_BY START_DATETIME END_DATETIME total time
bob 1/2/19 17:30 1/2/19 18:45 3.2500
bob 1/2/19 21:00 1/2/19 21:15
bob 1/2/19 21:00 1/2/19 22:00
bob 1/2/19 15:00 1/2/2019 16:00
joe 1/2/19 17:30 1/2/19 18:45
joe 1/2/19 21:00 1/2/19 21:15
joe 1/2/19 21:00 1/2/19 22:00
joe 1/2/19 15:00 1/2/2019 16:00
我的目标是输出工人的总工作时间。所提供的公式给出了整个文件的总数,而没有按工作人员对其进行分解。
【问题讨论】:
-
您必须更改存在某人数据的
Ranges。就像在上面的公式中一样,如果 Bob 的数据在第 2 到第 6 行,则需要将B:B更改为B2:B6。与其他列类似,例如 C 或公式中不存在的其他列 -
可能值得比较我的答案stackoverflow.com/questions/53572815/…,它确实需要帮助列但不需要 365。
标签: excel