如何用ARRAYFORMULA横向根据日期范围为谷歌表格标注递增周数
用ARRAYFORMULA实现谷歌表格年度周数横向自动填充
问题说明
- 年度表格布局,蓝色区域每行对应日期与星期
- 每月开头有空白列(比如灰色的February列),这类列不参与日期/星期递增
- 需要在每个周日的上方单元格填充
Wk01到Wk52的递增周数,周数间默认间隔6个空白单元格;如果跨了月空白列,间隔改为7个 - 必须用
ARRAYFORMULA实现横向批量生成
解决公式
假设日期/星期所在行是第2行,周数要填在第1行,把下面的公式放在第1行的起始单元格(比如B1):
=ARRAYFORMULA( LET( date_row, B2:ZZ2, // 替换成你表格里日期/星期实际所在的行范围 month_gaps, ISBLANK(date_row), // 标记出空白的月分隔列 wk_seq, SEQUENCE(1, 52, 1), // 生成1-52的周数序列 // 定位所有周日的列位置,同时处理跨月空白列的情况 sun_cols, REDUCE(, SEQUENCE(COLUMNS(date_row)), LAMBDA(acc,col, IF(OR(INDEX(date_row,col)="周日", AND(col>1, INDEX(date_row,col-1)="周日", INDEX(month_gaps,col)=TRUE)), VSTACK(acc,col), acc ) )), // 生成基础结果:在周日位置填周数,其余留空 base_res, IF(ISNUMBER(XMATCH(SEQUENCE(1,COLUMNS(date_row)), sun_cols)), "Wk"&TEXT(wk_seq,"00"), "" ), // 确保月分隔列保持空白 IF(month_gaps, "", base_res) ) )
公式细节解释
LET用来定义变量,让公式更易读和维护date_row:指定包含日期/星期的行,根据你的表格实际结构修改范围month_gaps:识别出那些作为月分隔的空白列sun_cols:遍历所有列,找到周日所在的列;如果周日后面跟着月空白列,就把周数放在空白列的下一列,保证间隔为7个单元格base_res:在定位好的周日位置填充格式化后的周数(补零成两位),其他位置留空- 最后一步过滤掉月分隔列,确保这些列保持空白
内容的提问来源于stack exchange,提问作者jfwork
相关产品推荐
相关产品推荐

