基于周数和年份生成起止日期的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
相关产品推荐
相关产品推荐

