从dynamic范围的date中排除周末

我已经build立了一个dynamic范围的OFFSET公式,表示一个列表中的date数组。 根据今天的date,从X星期前的星期一开始到Y星期前的星期五。 除了我希望从数组输出中排除周末date这一事实之外,所有事情都非常愉快。

我的原始数据有时会发生多次date,即

04/03/2013 = Mo 05/03/2013 = Tu 06/03/2013 = We 06/03/2013 = We 07/03/2013 = Th 08/03/2013 = Fr 09/03/2013 = Sa 10/03/2013 = Su 11/03/2013 = Mo 12/03/2013 = Tu 

这是我的dynamic范围。 日历!$ D:$ D是find上述格式的所有date。

 =OFFSET(Calendar!$D$1,MATCH(TODAY()+1-WEEKDAY(TODAY(),2)-14,Calendar!$D:$D,0)-1,0,MATCH(TODAY()+28-WEEKDAY(TODAY()+1),Calendar!$D:$D,0)-MATCH(TODAY()+1-WEEKDAY(TODAY(),2)-14,Calendar!$D:$D,0)+1) 

鉴于今天的date,它发现星期一从两个星期前,然后扩大到星期五3周前。 我怎样才能使dynamic范围排除周末?

您并不需要date列表 – 此公式将生成相同的date数组(不包括工作表列表)(仅限周一至周五)

=WORKDAY(TODAY()-WEEKDAY(TODAY(),2)-14,ROW(INDIRECT("1:30")))

在Excel 2007或更高版本中工作

考虑到你的评论下面我假设上述不会工作,所以另一种方法从两个date之间的列表中提取工作日可以这样工作:

=SMALL(IF((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6),Range),ROW(INDIRECT("1:"&SUM((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6)))))

这将给你所有的平日升序(无论在列表上的顺序),其中范围是你的date列表,开始是所需的开始date和结束是所需的结束date – 我可以把更多的细节,如果你想追求这个方法…..