重叠日期的行数

时间:2015-01-07 10:43:52

标签: excel date

我有两组日期范围,并使用sumproduct来识别前两列中哪些日期范围与后两列中的任何日期范围重叠

我现在需要的是确定第二个日期范围内重叠的哪一行,以便您可以在下面看到

TK  30/03/2015  24/04/2015  22/12/2014  21/01/2015      TRUE
TK  20/04/2015  24/04/2015  19/05/2015  21/01/2015      FALSE
TK  27/04/2015  15/05/2015  22/04/2015  04/04/2015      TRUE
TK  18/05/2015  20/05/2015  05/02/2015  09/02/2015      FALSE
TK  21/05/2015  22/05/2015  10/02/2015  11/02/2015      FALSE
TK  25/05/2015  25/05/2015  12/02/2015  12/02/2015      FALSE

G中使用的公式是

=SUMPRODUCT((A2=$A$2:$A$5)*((B2<=$E$2:$E$5)*(C2>=$D$2:$D$5)+(D2<=$C$2:$C$5)*(E2>=$B$2:$B$5)))>0

使用的列是A-G您可以看到第3行日期与第1行日期重叠

我需要做的是获取重叠日期的行号,这是我不知道是否有人可以提供帮助

我以为我昨天有了解决方案,因为小的测试数据集返回了正确的行,但是一旦我扩展了范围,它就生成了#N/A,我现在很困惑为什么会发生这种情况。

Jeeped给出的解决方案是(w / m / d / yy date)

 A   B           C           D           E          F    G      H
TK  03/30/2015  04/24/2015  12/22/2014  01/21/2015      TRUE    4
TK  04/20/2015  04/24/2015  05/19/2015  01/21/2015      FALSE   0
TK  04/27/2015  05/15/2015  04/22/2015  04/04/2015      TRUE    2
TK  05/18/2015  05/20/2015  02/05/2015  02/09/2015      FALSE   0
TK  05/21/2015  05/22/2015  02/10/2015  02/11/2015      FALSE   0
TK  05/25/2015  05/25/2015  02/12/2015  02/12/2015      FALSE   0

= SUMPRODUCT(ROW($2:$7)*(A2=$A$2:$A$7)*((B2<=$E$2:$E$7)*(C2>=$D$2:$D$7)+(D2<=$C$2:$C$7))*(E2>=$B$2:$B$7)))

将其扩展为350行时发生错误。

这就是我现在所拥有的

TK  19/01/2015  13/02/2015  27/10/2014  18/11/2014  13227

TK  09/02/2015  13/02/2015  12/11/2014  18/11/2014  4318

TK  16/02/2015  06/03/2015  19/11/2014  02/12/2014  4938

TK  09/03/2015  11/03/2015  03/12/2014  05/12/2014  1095

TK  12/03/2015  13/03/2015  08/12/2014  09/12/2014  583

TK  16/03/2015  16/03/2015  10/12/2014  10/12/2014  609

TK  16/03/2015  20/03/2015  10/12/2014  16/12/2014  609

TK  23/03/2015  27/03/2015  17/12/2014  18/12/2014  46

TK  30/03/2015  30/03/2015  19/12/2014  19/12/2014  22

TK  30/03/2015  10/04/2015  19/12/2014  24/12/2014  22

TK  13/04/2015  13/04/2015  05/01/2015  05/01/2015  22

TK  03/12/2014  05/12/2014  12/11/2014  18/11/2014  969

TK  08/12/2014  09/12/2014  19/11/2014  02/12/2014  1603

TK  10/12/2014  06/02/2015  16/02/2015  06/03/2015  18108

TK  10/12/2014  16/12/2014  09/03/2015  11/03/2015  4573

我复制了

10/12/2014  06/02/2015  16/02/2015  06/03/2015

10/12/2014  16/12/2014  09/03/2015  11/03/2015

每一组中的一对日期应该与其他范围相匹配,但事实并非如此

TX
Ĵ

1 个答案:

答案 0 :(得分:0)

如果您的错误是#N/A,那么我怀疑您没有正确调整ROW(...)功能。 ROW函数返回其他范围内的位置,并且必须具有相同的大小(IOW 行数),尽管它不一定是相同的行。如果您使用与其他范围相同的行号,您将最终得到工作表上的行。如果您希望在数据块中看到位置,那么ROW必须从 1 开始,并且必须缩短为与其他范围一样的确切行数。

$A$2:$A$350, $E$2:$E$350等每个都有349行(含),但ROW($1:$350)有350行(含),这导致#N/A。您需要使用ROW($1:$349)。另一个(更抽象的)示例是从第10行或$A$10:$A$82开始的73行数据块。要在数据块中找到位置,您可以使用ROW($1:$73)。如果您打算将其用作伪MATCH函数,则需要对ROW函数进行整形以匹配从1开始的数据块中的行数。

我不知道你是否需要350行,但这应该展示扩展行集上的方法。

=SUMPRODUCT(ROW($1:$350)*(A2=$A$2:$A$351)*((B2<=$E$2:$E$351)*(C2>=$D$2:$D$351)+(D2<=$C$2:$C$351)*(E2>=$B$2:$B$351)))