首页 > 解决方案 > “第一个星期一”公式的Excel变体

问题描述

编辑:

当我第一次发布这个问题时,我要求一个公式来解决一个条件,但后来意识到它实际上有两个条件。

给定一个特定的日期:

  1. 返回该月的第一个星期一,实际上可能是上个月的最后一个星期一。(当实际的第一个星期一落在 7 号时,就会发生这种情况。)

  2. 如果给定日期该月的第一个星期一之前(例如 8/1/19,这是一个星期三),则返回上个月的第一个星期一在本例中为 7/1/19)。

罗恩公式:

=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-2)

...符合第一个条件,它简短而优雅。也许它可以调整以适应第二个。

标签: excelexcel-formula

解决方案


换个角度看问题。这似乎有效:

=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-2)

它在本月 7 日之前的星期一返回。

编辑

我必须假设您的第二个条件优先于第一个条件,否则它永远不会适用。

既然如此

  • 使用IF函数来测试给定DAY是否小于给定,WEEKDAY使用一周开始的选项是在Monday
  • 如果是这种情况,则在公式中A1替换为。EDATE(A1,-1)

=IF(DAY(A1)<WEEKDAY(A1,2),EDATE(A1,-1)-DAY(EDATE(A1,-1))+7-WEEKDAY(EDATE(A1,-1)-DAY(EDATE(A1,-1))-2),A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-2))

推荐阅读