【问题标题】:formula to calculate work hours and sort by employee in an overlapping data array计算工作时间并在重叠数据数组中按员工排序的公式
【发布时间】: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


【解决方案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

【讨论】:

  • 我通过将每个工人分类到单独的工作表来开始工作。 Excel 冻结了公式,所以我上传到 Google 表格并在那里运行计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 2020-03-24
  • 2015-08-14
相关资源
最近更新 更多