按月拆分任务工作日的公式需求咨询
按月拆分任务工作日的公式需求咨询
嘿,我完全懂你现在的困扰——直接用NETWORKDAYS(B3,F2)只能算出从任务开始到某个月末的工作日,但没法灵活适配每个月份的起止边界,遇到任务跨月或者在月中开始/结束的情况就会出错。
针对你需要在黄色单元格(对应E到P列定义的各月起止日期)拆分计算工作日的需求,给你一个通用的公式,能自动处理所有边界情况:
假设你的表格结构是:
- B列是任务的开始日期(比如B3)
- C列是任务的结束日期(比如C3)
- E到P列的第二行(E2、F2...P2)是对应月份的结束日期,第一行(E1、F1...P1)是对应月份的开始日期
那么在黄色单元格(比如F3,对应2月的工作日计算)里输入:
=IF(MAX($B3,F$1) > MIN($C3,F$2), 0, NETWORKDAYS(MAX($B3,F$1), MIN($C3,F$2)))
公式逻辑拆解:
MAX($B3,F$1):取任务开始日期和当月起始日期中较晚的那个,确保我们只计算任务落在当月内的起始部分,不会把任务开始前的日期算进去MIN($C3,F$2):取任务结束日期和当月结束日期中较早的那个,确保只计算任务落在当月内的结束部分,不会把任务结束后的日期算进去IF(...):如果计算出来的起始日期晚于结束日期,说明任务和这个月份完全没有交集,直接返回0;否则用NETWORKDAYS()计算这个区间内的工作日数
使用小贴士:
- 公式里的
$B3和$C3用了列绝对引用,拖动填充时会保持引用B、C列的对应行;F$1和F$2用了行绝对引用,拖动时会自动切换到对应月份的起止日期(比如拖到G3时,会变成G$1和G$2) - 如果你的月份起止日期是放在同一列的不同行(比如E列是所有月份的开始,F列是所有月份的结束),只需要调整公式里的起止日期引用即可,逻辑是一样的
备注:内容来源于stack exchange,提问作者Xeman Berton
相关产品推荐
相关产品推荐

