如何动态生成两组起止日期间含首尾的所有周五日期?
提取起止日期区间内的所有周五(动态数组公式实现)
针对A1:C3中多任务的起止日期数据,仅用SEQUENCE只能生成连续日期,需搭配筛选与多任务遍历才能得到符合要求的结果。以下是可行的动态数组公式:
=LET( 任务数据,A2:C3, 遍历生成,BYROW(任务数据,LAMBDA(行, HSTACK(INDEX(行,1), FILTER(SEQUENCE(INDEX(行,3)-INDEX(行,2)+1,1,INDEX(行,2)), WEEKDAY(SEQUENCE(INDEX(行,3)-INDEX(行,2)+1,1,INDEX(行,2)),2)=5)) )), WRAPROWS(TOCOL(遍历生成,2),2) )
公式拆解
LET:定义变量简化公式逻辑,避免重复计算BYROW(任务数据, LAMBDA(行,...)):逐行处理每个任务的起止日期HSTACK(INDEX(行,1), ...):将任务名称和对应的周五日期横向配对FILTER(SEQUENCE(...), WEEKDAY(...)=5):用SEQUENCE生成起止日期间的所有连续日期,再通过WEEKDAY(...,2)判断是否为周五(参数2表示周一为1,周五对应5),筛选出符合条件的日期
TOCOL(遍历生成,2):把所有任务的结果展开成一维数组,自动忽略空值(无周五的任务会被跳过)WRAPROWS(...,2):将一维数组重新整理成两列表格,对应任务名称和周五日期
常见错误修正
你之前用SEQUENCE出错,大概率是这两个原因:
- 未搭配
FILTER筛选周五,仅生成了连续日期 WEEKDAY参数设置错误:如果用默认参数(周日为1),周五对应的是6而非5,判断值不匹配会导致筛选结果为空或错误
注意事项
- 仅支持Excel 365/2021及以上版本(需动态数组功能)
- 如果任务区间内没有周五,公式会自动跳过该任务的相关行,不会生成空行
内容的提问来源于stack exchange,提问作者brandon campbell
相关产品推荐
相关产品推荐

