SharePoint计算列:根据年份、周数和天数获取日期
实现基于年份、周数、天数的日期计算
嘿,这个需求我刚好帮别人捋过类似的,给你分享几个实用的实现方案,不管是Excel还是Google Sheets都能搞定,完全匹配你的示例场景~
核心逻辑拆解
你的输入格式是YYWW.D:
YY:两位年份(比如18=2018)WW:周数(每年从第1周开始,周一为周起始)D:周内天数(1=周一,2=周二…7=周日)
我们需要先拆解这三个部分,找到当年的第一个周一作为基准点,再加上对应周数和天数的偏移量就能得到目标日期。
Excel 公式实现(兼容大部分版本)
假设你的输入值在单元格A1,可以用以下公式直接计算:
=DATE(2000+LEFT(A1,2),1,1)+(1-WEEKDAY(DATE(2000+LEFT(A1,2),1,1),2)) + (MID(A1,3,2)-1)*7 + (RIGHT(A1,1)-1)
公式分步解释:
- 提取年份:
2000+LEFT(A1,2)→ 把前两位的YY转换成完整年份(比如18→2018) - 计算当年第一个周一:
DATE(year,1,1)+(1-WEEKDAY(DATE(year,1,1),2))
这里WEEKDAY(...,2)表示周一为1、周日为7,通过偏移量精准定位当年的第一个周一 - 加上周数偏移:
(WW-1)*7→ 第1周不需要偏移,第2周加7天,以此类推 - 加上天数偏移:
(D-1)→ 周一(D=1)不需要偏移,周二(D=2)加1天…
验证你的示例:
- 输入
1819.3→ 计算得5/9/18(完全匹配) - 输入
1820.1→ 计算得5/14/18(完全匹配)
Excel 365+ 更清晰的写法(用LET函数)
如果用的是Excel 365或更高版本,用LET函数可以让公式更易读、好维护:
=LET( input_text, TEXT(A1,"0000.0"), // 确保输入格式统一为文本,避免数字格式提取出错 year_num, 2000+LEFT(input_text,2), week_num, MID(input_text,3,2)+0, day_num, RIGHT(input_text,1)+0, first_monday, DATE(year_num,1,1)+(1-WEEKDAY(DATE(year_num,1,1),2)), first_monday + (week_num-1)*7 + (day_num-1) )
Google Sheets 适配方案
Google Sheets的函数逻辑和Excel几乎一致,直接用以下公式即可:
=DATE(2000+LEFT(A1,2),1,1)+(1-WEEKDAY(DATE(2000+LEFT(A1,2),1,1),2)) + (MID(A1,3,2)-1)*7 + (RIGHT(A1,1)-1)
额外提示
- 如果输入是数字格式(而非文本),公式里的
TEXT(A1,"0000.0")已经帮你转成了统一格式,不用担心提取字符出错 - 若要添加输入有效性验证(比如限制周数1-53,天数1-7),可以在数据验证里设置自定义规则,比如
AND(MID(A1,3,2)*1<=53,RIGHT(A1,1)*1<=7)
内容的提问来源于stack exchange,提问作者joshmk
相关产品推荐
相关产品推荐

