[英]how to calculate the date from the year, week-of-year and day-of-week in 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
我认为您是从零开始计算周数,因为对于9/1/2022
( YYYY/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。 假设周计数从零开始,如果不是,则需要调整公式以及输入数据。
请注意,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.