如何计算给定日期后的下一个星期一?


11

我正在寻找一个公式,该公式可以查看包含日期的单元格值并返回在该日期之后发生的第一个星期一。

示例(MM / dd / yyyy格式):

10/22/2013 (Tuesday) would return 10/28/2013 (Monday)
10/28/2013 (Monday)  would return 10/28/2013 (Monday)

Answers:


15

B2单元格包含日期。

=IF(WEEKDAY(B2)=2, B2, IF(WEEKDAY(B2)=1,B2+1, B2+9-WEEKDAY(B2)))

要么

=IF(WEEKDAY(B2,3)=0, B2, B2+7-WEEKDAY(B2,3))

3

更为优雅的解决方案是将每个输入更改适当的天数。

=B2+MOD(9-WEEKDAY(B2),7)

如果您想变得聪明一点,则不需要WEEKDAY,因为我们知道那个时代是在星期六(计算WEEKDAY(0)进行检查)

=B2+MOD(9-B2,7)

1

适用于一周中任何一天(N天)的通用且优雅的解决方案:

单元格B2:日期更改为一周的下一个N天;单元格B3:一周的下N天:Mon = 1,Tue = 2,...;

=B2+MOD(B3-WEEKDAY(B2,2),7)

对于一周中的特定日期,在本例中为星期一(day = 1),可以将该公式“硬编码”为

=B2+MOD(1-WEEKDAY(B2,2),7)

请注意,通过将工作日的第二个参数设置为“ 2”,weekday(B2,2)这将返回与上述公式(单元格B1)中使用的所需N天一致的星期几,即Mon = 1,Tue = 2,...


0

弗兰克(Franck)的解决方案在星期一非常理想,但其他日子则无法使用(我只测试了第二个公式)。但是,以下公式将在其他日子有效。令B2为日期,B3为日期(B3为1到7,其中周日为1):

=IF(WEEKDAY(B2,1)<B3, B2+B3-WEEKDAY(B2,1), B2+B3+7-WEEKDAY(B2,1))

注意:即使B2是请求的日期,这也会找到第二天。但是如果B2是请求的日期,则下一个公式今天将返回:

=IF(WEEKDAY(B2,1)<=B3, B2+B3-WEEKDAY(B2,1), B2+B3+7-WEEKDAY(B2,1))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.