确定同一月份的date,跨越几年的date

所以我有一个完整的date列表。 我需要找出哪些date落在与我每年所规定的“开始date”和“结束date”相同的范围内(date和月份)。

例如开始date:2/12/2004,结束date:31/1/2005,date在2000年12月12日至31/1/1,2/12/2001和31/1/2002, 12/2001和31/1/2002等应标记为“有效”。

目前我使用上限/下限,然后testingdate是否在范围内。

Excel公式:

上部:=date(年(date),月(testing),日(testing)+回顾期)

下:=date(年(date),月(testing),日(testing)回顾期)

有效:= IF(AND(date<=上,date> =下),1,0)

Test 1/1/2005 Look Back Period (Days) 30 Start Date 2/12/2004 (=Test + Look Back Period) End Date 31/1/2005 (=Test - Look Back Period) Date Upper Lower Valid 04/01/2000 31/1/2000 2/12/1999 1 05/01/2000 31/1/2000 2/12/1999 1 06/01/2000 31/1/2000 2/12/1999 1 07/01/2000 31/1/2000 2/12/1999 1 10/01/2000 31/1/2000 2/12/1999 1 11/01/2000 31/1/2000 2/12/1999 1 12/01/2000 31/1/2000 2/12/1999 1 13/01/2000 31/1/2000 2/12/1999 1 14/01/2000 31/1/2000 2/12/1999 1 17/01/2000 31/1/2000 2/12/1999 1 18/01/2000 31/1/2000 2/12/1999 1 19/01/2000 31/1/2000 2/12/1999 1 20/01/2000 31/1/2000 2/12/1999 1 21/01/2000 31/1/2000 2/12/1999 1 24/01/2000 31/1/2000 2/12/1999 1 25/01/2000 31/1/2000 2/12/1999 1 26/01/2000 31/1/2000 2/12/1999 1 27/01/2000 31/1/2000 2/12/1999 1 28/01/2000 31/1/2000 2/12/1999 1 31/01/2000 31/1/2000 2/12/1999 1 01/02/2000 31/1/2000 2/12/1999 0 02/02/2000 31/1/2000 2/12/1999 0 03/02/2000 31/1/2000 2/12/1999 0 04/02/2000 31/1/2000 2/12/1999 0 07/02/2000 31/1/2000 2/12/1999 0 . . . 30/11/2000 31/1/2000 2/12/1999 0 01/12/2000 31/1/2000 2/12/1999 0 04/12/2000 31/1/2000 2/12/1999 0 <-- :( 05/12/2000 31/1/2000 2/12/1999 0 <-- :( 06/12/2000 31/1/2000 2/12/1999 0 <-- :( 07/12/2000 31/1/2000 2/12/1999 0 <-- :( 08/12/2000 31/1/2000 2/12/1999 0 <-- :( 11/12/2000 31/1/2000 2/12/1999 0 <-- :( 12/12/2000 31/1/2000 2/12/1999 0 <-- :( 13/12/2000 31/1/2000 2/12/1999 0 <-- :( 14/12/2000 31/1/2000 2/12/1999 0 <-- :( 15/12/2000 31/1/2000 2/12/1999 0 <-- :( 18/12/2000 31/1/2000 2/12/1999 0 <-- :( 19/12/2000 31/1/2000 2/12/1999 0 <-- :( 20/12/2000 31/1/2000 2/12/1999 0 <-- :( 21/12/2000 31/1/2000 2/12/1999 0 <-- :( 22/12/2000 31/1/2000 2/12/1999 0 <-- :( 25/12/2000 31/1/2000 2/12/1999 0 <-- :( 26/12/2000 31/1/2000 2/12/1999 0 <-- :( 27/12/2000 31/1/2000 2/12/1999 0 <-- :( 28/12/2000 31/1/2000 2/12/1999 0 <-- :( 29/12/2000 31/1/2000 2/12/1999 0 <-- :( 01/01/2001 31/1/2001 2/12/2000 1 02/01/2001 31/1/2001 2/12/2000 1 03/01/2001 31/1/2001 2/12/2000 1 04/01/2001 31/1/2001 2/12/2000 1 05/01/2001 31/1/2001 2/12/2000 1 08/01/2001 31/1/2001 2/12/2000 1 09/01/2001 31/1/2001 2/12/2000 1 10/01/2001 31/1/2001 2/12/2000 1 11/01/2001 31/1/2001 2/12/2000 1 

只要期间不跨越几年,公式就可以正常工作。 但是,如果上下限在两年之间交叉,则有效公式将排除上一年的价值。

有没有解决这个问题?

要用公式做到这一点,设置两个辅助列

 lower1: =DATE(YEAR(Date)-1,MONTH(StartDate),DAY(StartDate)) upper1: =C8+2*LookBack Lower2: =DATE(YEAR(Date),MONTH(StartDate),DAY(StartDate)) Upper2: =Lower2+2*LookBack valid: =IF(OR(AND(Date>=lower1,Date<=upper1),AND(Date>=Lower2,Date<=Upper2)),1,0) 

我们正在做的是设置两组边界。 相对于Date ,一个从上一年开始; 另一个从今年开始。 然后检查Date ,看看它是否落在任何一组。

对于外观而言,并不要求界限列是可见的,甚至不要求它们与Datevalid列相邻。

在这里输入图像说明