EXCEL - 在不重复重叠时间段的情况下对多个持续时间的总时间段求和的公式

EXCEL - Formula to sum total period of multiple durations without duplicating overlapping time periods

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:B,"<"&ROW(A:A))-COUNTIF(C:C,"<"&ROW(A:A))>0))

但我需要对其进行调整才能为每台机器(有数百台机器)执行此操作

我看到这个计算每一个的公式(首先你用唯一的机器号填写行然后它进行计算,但这只计算重叠时间

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

这是第一栏

Machine 1
Machine 2
Machine 3

谢谢!

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

=SUMPRODUCT(--(COUNTIFS(B:B,"<"&ROW($A000:$A000),$A:$A,I1)-COUNTIFS(C:C,"<"&ROW($A000:$A000),$A:$A,I1)>0))

我还限制了要迭代的行数。该公式将从 28-Oct-1995 迭代到 8-Apr-2064。如果这些日期不够,请更改行号以匹配所需的日期。

使用完整的列会导致速度变慢,因为每个公式将迭代超过 200 万次。这些只会为每个公式迭代 50,000 次。


编辑

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

=SUMPRODUCT(--(COUNTIFS(B:B,"<"&ROW(INDEX(A:A,MIN(B:C)-1):INDEX(A:A,MAX(B:C)+1)),$A:$A,I1)-COUNTIFS(C:C,"<"&ROW(INDEX(A:A,MIN(B:C)-1):INDEX(A:A,MAX(B:C)+1)),$A:$A,I1)>0))