两个日期之间的序列,仅按指定的工作日,跳过所选周数
SEQUENCE between two dates, only by named weekdays, skipping number of weeks selected
我正在尝试根据轮换名册为合同工作创建工作时间表。
我已经能够使 SEQUENCE 公式列出两个日期之间的天数,按轮换设置的周数逐步增加,但我希望它只列出在 WEEK DAYS 中选择的星期几范围。
目前,公式开始的日期始终是开始日期。
例如,虽然03/01/2022(英国)是星期一,但如果WEEKDAY范围选择为星期四和星期五,轮换4周,那么结果应该给我结果:
Start Date
03/01/22
End Date
10/03/22
Week Rotation
8 (weeks)
Weekdays
Thursday
Fridays
Desired result:
06/01/22
07/01/22
10/02/22
11/02/22
07/03/22
08/03/22
目前我使用的公式是:
=SEQUENCE(B8,1,A5,A8*7)
但我觉得使用 FILTER,也许有一种方法可以让我获得想要的结果。
按照这些思路?
=FILTER(SEQUENCE(B8,1,A5,A8*7),WEEKDAY(SEQUENCE(B8,1,A5,A8*7),2))
非常感谢您的帮助 - 我花了很多时间试图用各种笨重的公式向前和向后解决这个问题!!!
Link 实时电子表格。
https://docs.google.com/spreadsheets/d/1W3LSAjrshz3Mil6dsYVzKmR4fuL0Nojptl778ppTaEY/edit?usp=sharing
尝试:
=FILTER(SEQUENCE((B5-A5)/7*A8, 1, A5),
REGEXMATCH(TEXT(SEQUENCE((B5-A5)/7*A8, 1, A5), "ddd"),
TEXTJOIN("|", 1, LEFT(B11:B15, 3))))
更新:
=FILTER(SEQUENCE(B5-A5, 1, A5),
REGEXMATCH(""&ROUNDUP(SEQUENCE(B5-A5)/7),
"\b("&JOIN("|", SEQUENCE(12, 1, 1, A8))&")\b"),
REGEXMATCH(TEXT(SEQUENCE(B5-A5, 1, A5), "ddd"),
TEXTJOIN("|", 1, LEFT(B11:B15, 3))))
我正在尝试根据轮换名册为合同工作创建工作时间表。
我已经能够使 SEQUENCE 公式列出两个日期之间的天数,按轮换设置的周数逐步增加,但我希望它只列出在 WEEK DAYS 中选择的星期几范围。
目前,公式开始的日期始终是开始日期。
例如,虽然03/01/2022(英国)是星期一,但如果WEEKDAY范围选择为星期四和星期五,轮换4周,那么结果应该给我结果:
Start Date
03/01/22
End Date
10/03/22
Week Rotation
8 (weeks)
Weekdays
Thursday
Fridays
Desired result:
06/01/22
07/01/22
10/02/22
11/02/22
07/03/22
08/03/22
目前我使用的公式是:
=SEQUENCE(B8,1,A5,A8*7)
但我觉得使用 FILTER,也许有一种方法可以让我获得想要的结果。
按照这些思路?
=FILTER(SEQUENCE(B8,1,A5,A8*7),WEEKDAY(SEQUENCE(B8,1,A5,A8*7),2))
非常感谢您的帮助 - 我花了很多时间试图用各种笨重的公式向前和向后解决这个问题!!!
Link 实时电子表格。
https://docs.google.com/spreadsheets/d/1W3LSAjrshz3Mil6dsYVzKmR4fuL0Nojptl778ppTaEY/edit?usp=sharing
尝试:
=FILTER(SEQUENCE((B5-A5)/7*A8, 1, A5),
REGEXMATCH(TEXT(SEQUENCE((B5-A5)/7*A8, 1, A5), "ddd"),
TEXTJOIN("|", 1, LEFT(B11:B15, 3))))
更新:
=FILTER(SEQUENCE(B5-A5, 1, A5),
REGEXMATCH(""&ROUNDUP(SEQUENCE(B5-A5)/7),
"\b("&JOIN("|", SEQUENCE(12, 1, 1, A8))&")\b"),
REGEXMATCH(TEXT(SEQUENCE(B5-A5, 1, A5), "ddd"),
TEXTJOIN("|", 1, LEFT(B11:B15, 3))))