计算除date列表之外的下一个date的公式

有人可以帮助公式计算下一个可用date,排除特定date列表(某些事件的封锁date)。 在附图中,当inputA栏中的计划date时,应根据1计算发票date。最早的发票date是最接近(计划date+ 5天)的事件date。 2.如果计算的发票date是其中一个封锁date,则应将发票date设置为下一个工作date

以上步骤1按公式计算,

=MIN(IF($B$2:$B$8-($A2+5)>=0,$B$2:$B$8)) 

对于第2步任何帮助表示赞赏。 当在计算的发票date尝试Vlookup以匹配阻止date的值 – 一旦计算第二天。 但是当第二天计算也是封锁的那一天,就会失败。 例如,在第一个数据行中,步骤1中的发票date是截止date为20年1月20日。

在步骤2中,如果使用VLOOKUP匹配20年1月20日并增加1天,则会给出21-Jan-16,这也是阻塞date。 任何build议recursion/迭代计算要完成?

样本数据

OP的样本数据

被阻止的date是相当大的一年和随机顺序清单。

WORKDAY.INTL函数 ¹对此尤其有效。 您不仅可以指定一系列节假日作为封锁date ,还可以指定一个特殊的周末string来标识周末的日子。 既然你不想排除任何其他的星期几,这将只是"0000000"

在E2中,

 =IFERROR(WORKDAY.INTL(AGGREGATE(15, 6, (B$2:INDEX(B:B, MATCH(1E+99,B:B )))/(B$2:INDEX(B:B, MATCH(1E+99,B:B ))-(A2+5)>=0), 1)-1, 1, "0000000", C$2:INDEX(C:C, MATCH(1E+99,C:C ))), "") 

由于我们正在处理第二代函数,所以我将MIN(IF(...数组公式)函数改成了一个不需要数组input的函数 ,并且使用一个IFERROR函数来避免显示#DIV/0!错误E8。

根据需要填写。

workday_intl_aggregate


¹WORKDAY.INTLfunction ¹ 是在Excel 2010中引入的。它在早期版本中不可用。

²AGGREGATE函数是在Excel 2010中引入的,它在早期版本中不可用。