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

如何在电子表格中实现特定周末节假日的合规顺延公式?

问题:实现特殊节假日顺延规则的无循环递归电子表格公式

本国法律规定,特定节假日不得落在周末,若遇周末需顺延至首个可用工作日——这里的"可用"指既不是周末,也不能与A列的常规节假日、其他已修正完成的特殊节假日冲突。比如圣X节固定在4月19日,若当天为周六/周日,或顺延的目标工作日已被其他节假日占用,需继续往后推,历史上曾出现顺延6甚至9天的情况。

表格结构

  • A列:常规节假日(无需调整)
  • B列:需顺延的特殊节假日的原始日期标记
  • C列:待处理的日期(对应B列的特殊节假日原始日期)
  • D列:预期输出,修正后的特殊节假日日期

现有尝试

我已经写出了可拖拽的公式,但依赖INDIRECT函数,不够理想:

=IF(COUNTIF($B$3:$B$100, C3)=0, C3,
  WORKDAY.INTL(C3-1, 1, "0000011",
  FILTER({$A$3:$A$100; $B$3:$B$100; INDIRECT("D$3:D"&ROW()-1)},
        ({$A$3:$A$100; $B$3:$B$100; INDIRECT("D$3:D"&ROW()-1)} <> C3 )
    *LEN({$A$3:$A$100; $B$3:$B$100; INDIRECT("D$3:D"&ROW()-1)}))))

也转换成了LAMBDA版本,但还是无法实现无循环引用的递归:

=BYROW(C3:C30, LAMBDA(x, LET(a, A3:A30, b, B3:B30,
 d, INDIRECT(ADDRESS(3, COLUMN())&":"&ADDRESS(ROW(x)-1, COLUMN())), 
 IF(COUNTIF(b, x)=0, x, WORKDAY.INTL(x-1, 1, "0000011",
 FILTER({a; b; d}, ({a; b; d}<>&x)*LEN({a; b; d})))))))

求无循环引用的递归实现方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:03:27