我有一个.XLXS表,其中包含工作人员名称,开始时间和结束时间。我想显示工人在忽略重叠期间的总工作时间。 例如,如果“鲍勃”在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
我的目标是输出工人的总工作时间。所提供的公式可提供整个文件的总数,而无需工作人员对其进行细分。
答案 0 :(得分:1)
您将需要MAXIFS和MINIFS,这意味着您需要Office 365 Excel:
=SUMPRODUCT(--(COUNTIFS(A:A,"bob",B:B,"<=" & MINIFS(B:B,A:A,"bob") + ROW($XFD$1:INDEX($XFD:$XFD,ROUND((MAXIFS(C:C,A:A,"bob")-MINIFS(B:B,A:A,"bob"))*1440,0)))/1440-1/2880,C:C,">=" & MINIFS(B:B,A:A,"bob") + ROW($XFD$1:INDEX($XFD:$XFD,ROUND((MAXIFS(C:C,A:A,"bob")-MINIFS(B:B,A:A,"bob"))*1440,0)))/1440-1/2880)>0))/60