如何在电子表格中实现特定周末节假日的合规顺延公式?
问题:实现特殊节假日顺延规则的无循环递归电子表格公式
本国法律规定,特定节假日不得落在周末,若遇周末需顺延至首个可用工作日——这里的"可用"指既不是周末,也不能与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
相关产品推荐
相关产品推荐

