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

Excel 365中SEQUENCE结合IF动态调整步长的引用问题求助

解决方案

原公式的核心问题是SEQUENCE(荷兰语REEKS)的步长参数仅支持单一固定值,无法随序列项自动递增引用D8、D9、D10等单元格。要实现动态判断每一周的日期调整逻辑,需结合BYROW函数遍历每个基础日期,再匹配对应D列的单元格值。

英语版公式

=BYROW(SEQUENCE(54),LAMBDA(n,LET(
    start_date, DATE($B$6,1,1)-WEEKDAY(DATE($B$6,1,1),2)+1,
    base_monday, start_date+(n-1)*7,
    base_monday+IF(INDEX(D:D,ROW(D8)+n-1)="Y",1,0)
)))

荷兰语版公式

=BYROW(REEKS(54);LAMBDA(n;LET(
    start_date; DATUM($B$6;1;1)-WEEKDAG(DATUM($B$6;1;1);2)+1;
    base_monday; start_date+(n-1)*7;
    base_monday+ALS(INDEX(D:D;RIJ(D8)+n-1)="Y";1;0)
)))

公式说明

  • SEQUENCE(54)生成1到54的序号,对应一年最多54周;
  • start_date计算指定年份的第一个周一;
  • base_monday基于第一个周一,逐周生成后续的周一日期;
  • INDEX(D:D,ROW(D8)+n-1)实现动态引用:n=1时指向D8,n=2时指向D9,依此类推;
  • 若D列对应单元格为Y,则给基础周一日期加1(返回周二),否则保持周一。

简化版(无需LET函数)

英语版:

=BYROW(SEQUENCE(54,1,DATE($B$6,1,1)-WEEKDAY(DATE($B$6,1,1),2)+1,7),LAMBDA(x,x+IF(INDEX(D:D,ROW(D8)+(x-DATE($B$6,1,1)-WEEKDAY(DATE($B$6,1,1),2)+1)/7)="Y",1,0)))

荷兰语版:

=BYROW(REEKS(54;1;DATUM($B$6;1;1)-WEEKDAG(DATUM($B$6;1;1);2)+1;7);LAMBDA(x;x+ALS(INDEX(D:D;RIJ(D8)+(x-DATUM($B$6;1;1)-WEEKDAG(DATUM($B$6;1;1);2)+1)/7)="Y";1;0)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:55:26