繁体   English   中英

如何计算 EXCEL 中的年份、星期几和星期几的日期?

[英]how to calculate the date from the year, week-of-year and day-of-week in EXCEL?

在此处输入图像描述

我有年、年中的星期和星期中的日期,我想将日期估计为 dd.mm.yyyy,它以黄色突出显示,如 EXCEL 图片中所示

我尝试了很多公式,但我相信可能有一个简单的公式。

我找到了解决方案:

Year = 2022 (A2) ; Week Year = 35 (B2); Week Day = 4 or Thursday (C2)

=DATE (A2,1,3)-WEEKDAY(DATE(A2,1,3)) + 7 * B2 + C2 - 6

我找到了这个解决方案,但如果它真的有效,你需要做进一步的测试。

我从一周开始计算月份:=+MONTH(DATE(YEAR(A2);1;1)+B2*7-1)
我根据星期名称计算星期数: =MATCH(D2;{"Monday";"Tuesday";"Wednesday";"Thursday";"Friday";"Saturday";"Sunday"};0)

然后使用:=DATE(A2;C2;E2)

在此处输入图像描述

我认为您是从零开始计算周数,因为对于9/1/2022YYYY/MM/DD格式),根据 function WEEKNUM(DATE(2022,9,1))的结果,相应的周为36 为了使用逻辑将周数乘以7 你需要使用一年的第一天作为参考,如果它是一个星期天,如果不是那么 go 回到上一个星期日,所以你可以计算整个星期。 底线用作参考日期,一年中第一周的星期日,而不是一年中的第一天 ( YYYY/1/1 )

这是我们在单元格E2中使用的方法:

=LET(y, A2:A6, wk, B2:B6, wDay, C2:C6, fDay, DATE(y,1,1), seq, SEQUENCE(7),
 fDay - IF(WEEKDAY(fDay)=1,0, WEEKDAY(fDay,2)) + 7*wk 
  + XLOOKUP(wDay, TEXT(seq,"dddd"), seq-1))

我们使用LET function 来避免重复相同的计算。 如果一年的第一天 ( fDay ) 不是星期日,则以下表达式查找前一个星期日:

fDay - IF(WEEKDAY(fDay)=1,0, WEEKDAY(fDay,2))

XLOOKUP function 用于获取工作日的数字表示,并使用TEXT function 生成长格式的工作日。 由于我们计算整个星期,如果工作日是星期日(我的屏幕截图中的C列),那么我们不需要在参考日期中添加任何一天,这就是我们使用seq-1的原因。

这是几个示例数据的 output。 假设周计数从零开始,如果不是,则需要调整公式以及输入数据。

excel输出

请注意,2021 年是从星期五开始的,因此如果我们想在星期五之前的第一周 ( 0 ) 找到一天,它将返回上一年的日期。 就像周一的情况一样。 如果您想要一条错误消息,则可以按如下方式修改公式:

=LET(y, A2:A6, wk, B2:B6, wDay, C2:C6, fDay, DATE(y,1,1), seq, SEQUENCE(7),
 result, fDay - IF(WEEKDAY(fDay)=1,0, WEEKDAY(fDay,2)) + 7*wk
  + XLOOKUP(wDay, TEXT(seq,"dddd"), seq-1),
 IF(YEAR(result) <> y, "ERROR: Date from previous year", result))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM