基于一周的第一个星期一或星期二等的公式第 2 部分

Formula based on first monday or tuesday etc of the week Part 2

所以在过去我使用的是公式

=DATE(2022,{1;2;3;4;5;6;7;8;9;10;11;12},7-WEEKDAY(DATE(2022,{1;2;3;4;5;6;7;8;9;10;11;12},1)-5,3))

计算每个月的第一个星期一。

我们通过让用户在单元格 A1 中输入年份以及我们需要在单元格 A2 中的每个月的第一天来获取每个月的第一天来进一步使其具有交互性

=LET(yr,A1,
    wkdy,MATCH(PROPER(A2),{"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"},0),
    mnt,SEQUENCE(12),
    DATE(yr,mnt,1)+MOD(8-WEEKDAY(DATE(yr,mnt,1),10+wkdy),7))

感谢 Scott Craner 提供的那段代码。现在我们要做的是更进一步。因此,与其将年份放入单元格 A1,不如将今天的日期(或与此相关的任何日期)放入单元格 A1,然后将日期放入单元格 A2,并让它计算出接下来的 12 个第一个星期一或星期二或接下来 12 个月单元格 A2 中的任何一天?

编辑(我之前的 post 有错误,所以我调整了 Scott 的版本):

=LET(yr,YEAR(A1),    
     wkdy,MATCH(PROPER(A2),{"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"},0),    
     mnt,SEQUENCE(12,,MONTH(A1)),
DATE(yr,mnt,1)+MOD(8-WEEKDAY(DATE(yr,mnt,1),10+wkdy),7))

稍微简化斯科特的公式, 你可以试试:

=LET(dt, DATE(YEAR(A1),SEQUENCE(12,,MONTH(A1)+1),8),
wkdy, MATCH(LEFT(A2,3),{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"},0),
dt-(WEEKDAY(dt-wkdy)))