簡體   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