有人可以帮助公式计算下一个可用日期,不包括特定日期列表(某些事件的阻止日期)。 在附加的图像中,当输入A列中的计划日期时,它应基于计算发票日期 1.最早的发票日期是最接近(计划日期+5天)的事件日期。 2.如果计算的发票日期是其中一个阻止日期,则应将发票日期设置为下一个工作日期
上面的步骤1计算如公式所示
=MIN(IF($B$2:$B$8-($A2+5)>=0,$B$2:$B$8))
对于第2步,我们非常感谢您的帮助。在计算的发票日期尝试Vlookup以匹配阻止日期中的值 - 一旦计算出第二天。但是当第二天计算时也被阻止了一天,它就失败了。例如,在第一个数据行中,基于步骤1的发票日期是20-Jan-16,即阻止日期。
在步骤2中,如果VLOOKUP用于匹配20-Jan-16并且增加1天,则它将给出21-Jan-16,这也是阻止日期。有关递归/迭代计算的建议吗?
阻止日期是一年中相当大的列表,按随机顺序排列。
答案 0 :(得分:2)
WORKDAY.INTL function¹应该对此特别有效。您不仅可以指定一系列假期作为阻止日期,还可以指定一个特殊的周末字符串,用于标识日期被视为周末。由于您不想排除任何其他星期几,因此只需"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(...
数组公式更改为AGGREGATE² function,不必输入数组并使用包装IFERROR function来避免显示E8中出现#DIV/0!
错误。
根据需要填写。
¹ Excel 2010引入了WORKDAY.INTL function¹。早期版本不提供。
² {2010}引入了AGGREGATE function。它在早期版本中不可用。