Excel 从动态日期范围中排除周末

Excel 从动态日期范围中排除周末,excel,dynamic,range,date-range,Excel,Dynamic,Range,Date Range,我已经为一个动态范围构建了一个偏移量公式,它表示一个列表中的日期数组。根据今天的日期,从星期一X周前开始到星期五Y周前。除了我想从数组输出中排除周末日期这一事实之外,一切都很愉快 我的原始数据有时会出现多个日期,即 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 = M

我已经为一个动态范围构建了一个偏移量公式,它表示一个列表中的日期数组。根据今天的日期,从星期一X周前开始到星期五Y周前。除了我想从数组输出中排除周末日期这一事实之外,一切都很愉快

我的原始数据有时会出现多个日期,即

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
这是我的动态范围。日历$D:$D是找到上述格式中所有日期的位置

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

考虑到今天的日期,它将从两周前的周一开始查找,然后将范围扩大到3周前的周五。如何将动态范围排除在周末之外?

您实际上不需要日期列表-此公式将生成相同的日期数组(仅周一到周五),而无需参考工作表列表

=工作日(今天()-工作日(今天(),2)-14行(间接(“1:30”))

在Excel 2007或更高版本中工作

鉴于您在下面的评论,我假设上述方法不起作用,因此从列表中提取两个日期之间的工作日的替代方法可以如下所示:


=SMALL(IF((Range>=Start)*)(Range)我无法更改源工作表的布局,但可以将周末值为空的单元格设置为空。不知道这有多大帮助。我尝试使用IF weekend日期,然后“”条件设置为OFFSET函数,它确实起作用,但它在数组中留下空白单元格,而不是将列合并到一个一致的流中。试想,使用
na()
而不是
,或者您可以使用三个抵销函数而不是一个来删除周末?事实上,我刚刚删除了所有周末日期。我不想碰它们,因为这会破坏另一张工作表,但我更改了其中的公式,现在我的两张工作表都可以工作。回应您的评论:我不相信动态范围可以是串联的s偏移函数的et。至于NA(),它的工作原理与空格相同,即在输出数组中,周末日期将被NA()替换。虽然我已经找到了一个解决方法,但我仍然渴望找到一个解决方案。我不在我的pc上,但我很想尝试一些事情……如果你找到了解决方案,我会非常高兴的!间接方法如何(“1:30”)元素功?公式对我不起作用,而且我不明白它如何识别某些日期重复出现多次的周数。好吧-我的错误-我没有注意到重复的日期,所以它们需要从列表中提取,但没有SAT和Suns?行(间接(“1:30”))假设您想要30个日期(6周,周一至周五),只生成一个数字1到30的数组,但如果您有重复的日期,这是没有意义的……不幸的是,情况是有重复的日期,因此需要提取所有非周六和周日的日期。好的,谢谢,我编辑了我的回复,以显示执行此操作的通用方法