簡體   English   中英

從 Google 表格中的周數獲取日期

[英]Get date from week number in Google Sheets

如果我在 2017 年有第 7 周,那一周的星期一在 Google 表格中是哪一周的日期?

=DATE(B9,1,1)-WEEKDAY(DATE(B9,1,1),3)+7*(WEEKDAY(DATE(B9,1,1),3)>3)+7*(A9-1)

是最復雜的公式,我知道這對於瑞典周數有效(即Monday first day of weekISO的規則對於什么是一周1 )。

簡答(A1 ==周,B1 ==年):

=DATE(B1;1;1)+((A1-1)*7)-WEEKDAY(DATE(B1;1;1);3)

答案很長:

DATE(<year>;1;1) // days since 1970 until the frist day of the year

((<week number>-1)*7) // how many days into the year is this week

減去

WEEKDAY(DATE(<year>;1;1);3) // how many extra days from previous year in first week

PS:

這假設星期一作為一周的第一天,您必須更改WEEKDAY的參數以將其更改為星期日

由於這個定義( https://en.wikipedia.org/wiki/Week ),必須使用1月4日而不是1月1日。 1月4日是第一天,總是在第1周。

=DATE(B1;1;4)+((A1-1)*7)-WEEKDAY(DATE(B1;1;4);3)

如果您使用的是 ISO 周,則接受的答案不會考慮在2020-w53等 2 個技術年(即從 2020 年 12 月 28 日到 2021 年 1 月 3 日)重疊的周數。

因此我改用這個公式:

=DATE(K2,1,1)-WEEKDAY(DATE(K2,1,1),2)+7*(WEEKDAY(DATE(K2,1,1),2)>3)+7*(L2-1) +1

其中K是年份, L是周數(從 yyyy-ww 分成 2 列)

把它放在一個數組公式中:

=ArrayFormula(if(K2:K="",, DATE(K2:K,1,1)-WEEKDAY(DATE(K2:K,1,1),2)+7*(WEEKDAY(DATE(K2:K,1,1),2)>3)+7*(L2:L-1) +1 ))

您可以使用=ArrayFormula(if(E2:E="",,split(E2:E,"-")))將 yyyy-ww 拆分為兩列。

注意:此公式將返回星期一(這是國際標准 ISO 中一周的第一天)

在 2023 年完成這項工作。它也將在 2024 年底之前工作。這表示 AND 邏輯存在缺陷。請隨時提出建議以使其變得更好

=IFS(
AND(ISOWEEKNUM(A8)=52,YEAR(A8)<>YEAR(A7)),

DATE(YEAR(A8-1),1,1)-WEEKDAY(DATE(YEAR(A8-1),1,1),3)+7*(WEEKDAY(DATE(YEAR(A8-1),1,1),3)>3)+7*(ISOWEEKNUM(A8)-1),

DATE(YEAR(A8),1,1)-WEEKDAY(DATE(YEAR(A8),1,1),3)+7*(WEEKDAY(DATE(YEAR(A8),1,1),3)>3)+7*(ISOWEEKNUM(A8)-1)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM