2016-03-11 88 views
2

我正在開發一個excel任務,我必須查明是否有重疊的日期。Excel公式:表中重疊的日期

在我的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列中顯示爲真值。邏輯與這些值給我最終的預期值,指示是否存在任何無效日期。

我的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) 

但是,我不能有一個附加列。所以,我需要修改公式,以便它返回TRUE,只有所有Date值都有效。

我無法弄清楚如何在不使用列的情況下進行邏輯與運算。您的想法和努力值得讚賞。

+0

你能解釋一下爲什麼後面的第三排有'當第2行是InvalidDate'一個'FALSE'值邏輯「真」? –

+0

謝謝你的擡頭。如果沒有重疊的日期,最後一列是錯誤的。對於。例如第二行是錯誤的,因爲沒有與06-03-14到07-03-14重疊的其他日期範圍(DD-MM-YY) –

+0

這看起來像使用SQL時彈出的間隙和孤島問題。 –

回答

2

用來計數overlaping日期範圍的單個行的公式可以被簡化:

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

要改變它爲布爾值,在末尾添加>1

要檢查單個單元格中的所有行,可以使用具有上述公式的數組版本的聚合函數。例如(與按Ctrl +確認 + 輸入):

=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))