首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel对“第一个星期一”公式的修改

Excel对“第一个星期一”公式的修改
EN

Stack Overflow用户
提问于 2019-09-11 00:53:32
回答 2查看 118关注 0票数 1

编辑:

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

给定某一特定日期:

  1. 返回月份的第一个星期一,实际上可能是前一个月的最后一个星期一。(这发生在实际的第一个星期一是在7日。)
  2. 如果给定日期在该月份的第一个星期一之前(例如,8/1/19,即星期三),则返回前一个月的第一个星期一(本例中为7/1/19)。

罗恩公式:

代码语言:javascript
运行
复制
=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-2)

...fit是第一个条件,它又短又优雅。也许它可以调整,以适应第二个。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-11 01:42:07

对这个问题的看法有点不同。这似乎是可行的:

代码语言:javascript
运行
复制
=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-2)

它将在这个月7日之前的星期一返回。

编辑

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

既然如此

  • 使用IF函数来测试给定的DAY是否小于、给定的WEEKDAY,使用这个星期的选项开始在周一上。
  • 如果是这样的话,那么在公式中将A1替换为EDATE(A1,-1)
代码语言:javascript
运行
复制
=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))
票数 2
EN

Stack Overflow用户

发布于 2019-09-11 01:05:52

试着这样做,只要检查一个月的第一天是否是星期二,你就可以减去1,否则就像你已经做的那样减去工作日。

代码语言:javascript
运行
复制
=DATE(YEAR(H20),MONTH(H20),1)+IF(WEEKDAY(DATE(YEAR(H20),MONTH(H20),1),1)=3,-1,CHOOSE(WEEKDAY(DATE(YEAR(H20),MONTH(H20),1)),1,0,6,5,4,3,2))

这也同样适用于较少的字符;

代码语言:javascript
运行
复制
=EOMONTH(H20,-1)+IF(WEEKDAY(EOMONTH(H20,-1)+1,12)=1,0,9-WEEKDAY(EOMONTH(H20,-1)+1,11))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57879745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档