EXCEL-公式,用于汇总多个持续时间的总期间而不重复重叠的时间段

时间:2018-12-07 21:52:42

标签: excel excel-formula excel-2016

Machine_ID  STARTDATE   ENDDATE
Machine 1   23-Apr-10   8-Jul-13
Machine 1   16-Jun-10   10-Jul-10
Machine 1   15-Aug-12   5-Oct-12
Machine 1   9-Jul-13    2-Jan-14
Machine 1   31-Dec-13   3-Jan-14
Machine 2   28-Mar-13   14-Apr-13
Machine 2   12-Jun-13   27-Jul-13
Machine 2   24-Jul-13   28-Oct-13
Machine 2   24-Oct-13   27-Oct-13

我想计算每台机器的总时间,而不必重复重叠的时间段。到目前为止,此数组公式(ctrl + shift + enter)可以完美地实现:

=SUM(--(COUNTIF(B$2:B$5,"<"&ROW(A:A))-COUNTIF(C$2:C$5,"<"&ROW(A:A))>0))

但是我需要对其进行调整,以便能够为每台机器(有数百台机器)做到这一点

我看到了这个公式,它可以为每个公式进行计算(首先,您用唯一的机器编号填写行,然后进行计算,但这仅计算重叠时间

=SUMPRODUCT(--($A$2:$A$36=$I2),--($C$2:$C$36>$B$3:$B$37),--($B$3:$B$37<>""), 
($C$2:$C$36-$B$3:$B$37)-($C$2:$C$36-$C$3:$C$37)*($C$2:$C$36>$C$3:$C$37)* 
($C$3:$C$37<>0))

这是第一列

Machine 1
Machine 2
Machine 3

谢谢!

1 个答案:

答案 0 :(得分:0)

使用COUNTIFS并添加机器的条件:

i18n

我还限制了要迭代的行数。该公式将从=SUMPRODUCT(--(COUNTIFS(B$2:B$10,"<"&ROW($A$35000:$A$60000),$A$2:$A$10,I1)-COUNTIFS(C$2:C$10,"<"&ROW($A$35000:$A$60000),$A$2:$A$10,I1)>0)) 迭代到28-Oct-1995。如果这些日期不足,请更改行号以匹配所需的日期。

使用完整的列会导致速度变慢,因为每个公式都会迭代200万次以上。每个公式只能迭代50,000次。

enter image description here


编辑

如上所述,我们要限制迭代次数。此公式将自动将迭代限制为MIN和MAX日期。

8-Apr-2064