我为动态范围构建了一个OFFSET公式,表示列表中的日期数组。根据今天的日期,日期从周一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周前。如何使动态范围排除在周末之外?
答案 0 :(得分:1)
您实际上并不需要日期列表 - 此公式将生成相同的日期数组(仅限周一至周五),而不会引用工作表列表
=WORKDAY(TODAY()-WEEKDAY(TODAY(),2)-14,ROW(INDIRECT("1:30")))
适用于Excel 2007或更高版本
鉴于您的评论如下,我认为上述内容不起作用,因此从两个日期之间的列表中提取工作日的替代方法可以这样工作:
=SMALL(IF((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6),Range),ROW(INDIRECT("1:"&SUM((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6)))))
这将按升序提供所有工作日(无论列表中的顺序),其中Range是您的日期列表,Start是所需的开始日期,End是所需的结束日期 - 我可以在其上添加更多详细信息如果你想追求那种方法......