You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于周数和年份生成起止日期的arrayformula函数问题求助

解决谷歌表格ARRAYFORMULA自动填充周起止日期及年份切换日期不匹配问题

1. TempDataSet工作表实现ARRAYFORMULA自动填充周起止日期

针对你给出的单个单元格公式,直接改成数组版本即可实现自动填充,同时避免空行无效计算:

起始日期数组公式(放在起始日期列首行,比如T2)

=ARRAYFORMULA(IF(R2:R="",,MAX(DATE(R2:R,1,1), DATE(R2:R,1,1)-WEEKDAY(DATE(R2:R,1,1),2)+(S2:S-1)*7+1)))

结束日期数组公式(放在结束日期列首行,比如U2)

=ARRAYFORMULA(IF(R2:R="",,MIN(DATE(R2:R+1,1,0), DATE(R2:R,1,1)-WEEKDAY(DATE(R2:R,1,1),2)+S2:S*7)))

公式里的IF(R2:R="",, ...)会自动跳过空行,只计算有Year和Week Number的行。

2. 修复Weekly Hourly Rate Timeline年份切换日期不匹配问题

这个问题是因为周数计算逻辑不统一导致的,统一用ISO周规则(周一为一周起始)就能解决:

替换为ISO周日期计算公式

如果当前表格的周定义是周一到周日,直接用以下数组公式替换现有日期计算:

ISO周起始日期

=ARRAYFORMULA(IF(A2:A="",,DATE(A2:A,1,1)-WEEKDAY(DATE(A2:A,1,1),2)+(B2:B-1)*7+1))

ISO周结束日期

=ARRAYFORMULA(IF(A2:A="",,DATE(A2:A,1,1)-WEEKDAY(DATE(A2:A,1,1),2)+B2:B*7))

如果需要严格适配ISO跨年周(比如第53周跨到下一年),用反向推导的公式:

严格ISO周起始日期

=ARRAYFORMULA(IF(A2:A="",,DATE(A2:A,1,1)+(B2:B-1)*7-WEEKDAY(DATE(A2:A,1,1),3)))

严格ISO周结束日期

=ARRAYFORMULA(IF(A2:A="",,DATE(A2:A,1,1)+B2:B*7-WEEKDAY(DATE(A2:A,1,1),3)-1))

替换后再切换2021/2022年份,第14周的起止日期就会匹配预期的3月29日至4月4日。

内容的提问来源于stack exchange,提问作者Evans Raymond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:03:40