根据规则生成一系列date
我想根据我的业务规则生成一系列date,最好使用Excel或其他Office产品。
业务规则示例:
- 包括所有星期二,星期四和星期五。
- 排除每个月的最后一天。
这会产生:
27 Jun 2017 29 Jun 2017 04 Jul 2017 06 Jul 2017 07 Jul 2017
我不需要一个完整的解决scheme,如果你可以推荐使用哪些function和一般的方法。 提前致谢!
这是一个powershell方法。
在A1放置开始date。
然后在A2中使用数组公式:
=MIN( IF((A1+ROW(INDIRECT("1:7"))<>EOMONTH(A1,0))*((WEEKDAY(A1+ROW(INDIRECT("1:7")))=3)+(WEEKDAY(A1+ROW(INDIRECT("1:7")))=5)+(WEEKDAY(A1+ROW(INDIRECT("1:7")))=6)),A1+ROW(INDIRECT("1:7"))))
作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}
。
或者你可以在A2中使用这个不需要Ctrl-Shift-Enter的非CSE公式:
=AGGREGATE(15,6,(A1+ROW(INDIRECT("1:7")))/(((WEEKDAY(a1+ROW(INDIRECT("1:7")))=3)+(WEEKDAY(a1+ROW(INDIRECT("1:7")))=5)+(WEEKDAY(a1+ROW(INDIRECT("1:7")))=6))*(A1+ROW(INDIRECT("1:7"))<>EOMONTH(A1,0))),1)
根据需要格式化A2。 然后复制下来
备用解决scheme:
在单元格A1中,将起始date(2017年6月27日,使用您的示例)
在单元格A2中复制下来,使用此公式:
=LOOKUP(2,1/(((WEEKDAY(A1+{7,6,5,4,3,2,1})=3)+(WEEKDAY(A1+{7,6,5,4,3,2,1})=5)+(WEEKDAY(A1+{7,6,5,4,3,2,1})=6))*(A1+{7,6,5,4,3,2,1}<>EOMONTH(A1,0))),A1+{7,6,5,4,3,2,1})