Excel公式:表格中的重叠日期

时间:2016-03-11 08:43:15

标签: excel excel-formula apache-poi excel-2010 xlsx

我正在开展一项ex​​cel任务,我必须找出是否有重叠的日期。

在我的Excel工作表中有startDate(D列)和EndDate(comun E)的列,由此我必须确定是否存在重叠日期。

以下公式确定这组startDate& endDate与工作表中的任何其他日期组合重叠。

=SUM(COUNTIFS($A$2:$A$100,$A2,$D$2:$D$100,"<"&$D2)-COUNTIFS($A$2:$A$100,$A2,$D$2:$D$100,"<"&$D2,$E$2:$E$100,"<"&$D2),COUNTIFS($A$2:$A$100,$A2,$E$2:$E$100,">"&$E2)-COUNTIFS($A$2:$A$100,$A2,$E$2:$E$100,">"&$E2,$D$2:$D$100,">"&$E2),IF(COUNTIFS($A$2:$A$100,$A2,$D$2:$D$100,$D2)=1,0,1),IF(COUNTIFS($A$2:$A$100,$A2,$E$2:$E$100,$E2)=1,0,1))>0

将此公式应用于所有行时,在InvalidDate列中看到无效行的值为true。逻辑AND对这些值给出了最终预期值,表明是否存在任何无效日期。

我的excel列如下所示:

Name(A)   SD(D)   ED(E) InvalidDate
B   01-03-14    04-03-14    TRUE
B   06-03-14    07-03-14    FALSE
B   05-03-14    05-03-14    FALSE
B   05-02-14    05-02-14    FALSE
B   03-03-14    03-03-14    TRUE
B   17-03-14    18-03-14    FALSE
B   21-02-14    02-03-14    TRUE
B   08-03-14    09-03-14    FALSE
B   10-03-14    15-03-14    FALSE
B   16-03-14    16-03-14    FALSE

SD: Start Date
ED: End Date
Name: Value in Column A (Dates are compared for identical values of this column)

但是,我不能有一个额外的专栏。因此,我需要修改公式,使其只有在所有Date值都有效时才返回TRUE。

我无法弄清楚如何在不使用列的情况下进行逻辑AND操作。感谢您的想法和努力。

1 个答案:

答案 0 :(得分:2)

可以简化用于计算单行重叠日期范围的公式:

=COUNTIFS($E$2:$E$11,">="&D2, $D$2:$D$11,"<="&E2, $A$2:$A$11,A2)

要将其更改为布尔值,请在末尾添加>1

要检查单个单元格中的所有行,可以使用具有上述公式的数组版本的聚合函数。例如(使用 Ctrl + Shift + Enter 确认):

=MAX(COUNTIFS($E$2:$E$11,">="&$D$2:$D$11,$D$2:$D$11,"<="&$E$2:$E$11,$A$2:$A$11,$A$2:$A$11))