Excel中计算工作周期最后一天的公式求助
Excel列E公式解决方案
场景1:工作周期为连续工作日(后续紧跟休息日)
如果你的「工作周期」指连续工作日序列(D=False),序列最后一天是下一个休息日的前一天,在E2单元格输入以下公式后下拉填充:
=IF(D2, A2, XLOOKUP(TRUE, D3:$D$1000, A3:$A$1000, INDEX(A:A,COUNTA(A:A)), 1, 1)-1)
- 公式说明:
IF(D2, A2, ...):若D列为True(休息日),直接返回A列日期XLOOKUP(...):从当前行下一行开始,查找第一个标记为休息日的行,返回对应日期INDEX(A:A,COUNTA(A:A)):若当前行之后无休息日(表格最后一行是工作日),返回表格最后一个日期-1:将找到的休息日日期减1,得到当前工作周期的最后一个工作日
场景2:工作周期基于B列的活动代码
如果你的「工作周期」是同一活动代码(B列)对应的所有工作日,最后一天为该代码下最晚的工作日日期,使用以下公式:
=IF(D2, A2, MAXIFS(A:A, B:B, B2, D:D, FALSE))
- 公式说明:
MAXIFS(A:A, B:B, B2, D:D, FALSE)筛选出B列与当前行相同、且D列为False(工作日)的所有A列日期,取最大值即为该周期最后一天
适配旧版Excel(无XLOOKUP)
若使用旧版Excel,可将场景1的公式替换为:
=IF(D2, A2, LOOKUP(2,1/(D3:$D$1000=TRUE),A3:$A$1000)-1)
通用注意事项
- 把公式中的
$D$1000、$A$1000替换为你表格实际的最后行号
内容的提问来源于stack exchange,提问作者Yuri
相关产品推荐
相关产品推荐

