[英]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.