我想根据我的业务规则生成一系列日期,最好使用Excel或其他Office产品。
业务规则示例:
这会产生:
27 Jun 2017
29 Jun 2017
04 Jul 2017
06 Jul 2017
07 Jul 2017
如果您可以推荐使用哪些功能和一般方法,我不需要完整的解决方案。提前谢谢!
答案 0 :(得分:2)
这是一种蛮力方法。
在A1中列出了开始日期。
然后在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中使用这个非CSE公式,不需要Ctrl-Shift-Enter:
=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。然后复制
答案 1 :(得分:2)
替代解决方案:
在单元格A1中,输入开始日期(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})