这是解决方案的基础,但我必须手动将查询列格式化为时间,如果班次在午夜分开,您必须按照您对列 C 所说的添加 1:
=ArrayFormula(query({A2:A,to_pure_number(B2:B),to_pure_number(C2:C)},"select Col1,max(Col3)-min(Col2),sum(Col3)-Sum(Col2) where Col1 is not null
group by Col1 label Col1 'Shift',max(Col3)-min(Col2) 'Total',sum(Col3)-Sum(Col2) 'Task' "))
以下是处理从午夜到第二天的班次的建议。有必要将两个时间列都加 1 以获得正确的结果。这假设在每个班次中以正确的顺序输入任务,或者至少在每个班次中首先输入第一个任务:
=ArrayFormula(query({A2:A,to_pure_number(B2:B+(B2:B<vlookup(A2:A,{A2:A,B2:B},2,false))),
to_pure_number(C2:C+(C2:C<vlookup(A2:A,{A2:A,B2:B},2,false)))},"select Col1,max(Col3)-min(Col2),sum(Col3)-Sum(Col2) where Col1 is not null
group by Col1 label Col1 'Shift',max(Col3)-min(Col2) 'Total',sum(Col3)-Sum(Col2) 'Task' "))