Excel日期相减公式修正:仅第4个工作日计为新月份
问题与公式修正
问题说明
现有Excel公式用于计算结束日期与开始日期的月份差,规则为仅当日期处于当月第4个工作日及之后时,才视为进入该月份;但当前公式会在日期为当月第3个工作日时错误增加一个月份,需修正该逻辑。
原公式
=(MONTH(C2)+YEAR(C2)*12)-(MONTH(D2)+YEAR(D2)*12) + (NETWORKDAYS(DATE(YEAR(C2),MONTH(C2),1),C2)>3) - (NETWORKDAYS(DATE(YEAR(D2),MONTH(D2),1),D2)>3)
修正思路
原公式的判断条件逻辑反转:
- 原逻辑是「日期过了第3个工作日则调整月份数」,但正确逻辑应为「日期未到第4个工作日(即前3个工作日)则不计入当前月份」
- 将判断条件改为
NETWORKDAYS(月初日期, 目标日期)<=3,并调整对应的加减符号,实现「前3个工作日不计入当月」的规则
修正后公式
=(MONTH(C2)+YEAR(C2)*12)-(MONTH(D2)+YEAR(D2)*12) - (NETWORKDAYS(DATE(YEAR(C2),MONTH(C2),1),C2)<=3) + (NETWORKDAYS(DATE(YEAR(D2),MONTH(D2),1),D2)<=3)
公式解释
- 基础月份差:
(MONTH(C2)+YEAR(C2)*12)-(MONTH(D2)+YEAR(D2)*12)将日期转换为「年份×12+月份」的总月数,计算结束日期与开始日期的基础月份差 - 结束日期调整:如果结束日期是当月前3个工作日,减去1(不计入当前月份)
- 开始日期调整:如果开始日期是当月前3个工作日,加上1(视为在上一个月份,抵消基础差的偏差)
测试数据
| 结束日期 | 开始日期 |
|---|---|
| 2022/2/2 | 2018/3/6 |
| 2022/8/5 | 2018/3/20 |
| 2022/6/21 | 2020/6/10 |
| 2022/8/3 | 2020/6/10 |
| 2022/8/11 | 2020/6/10 |
| 2022/4/18 | 2020/11/2 |
| 2022/4/23 | 2020/11/6 |
| 2022/7/2 | 2020/11/2 |
| 2022/7/2 | 2020/11/2 |
| 2022/8/13 | 2020/11/2 |
| 2022/9/7 | 2020/11/2 |
| 2022/8/3 | 2022/7/1 |
| 2022/9/1 | 2022/5/1 |
内容的提问来源于stack exchange,提问作者Kenzerz11
相关产品推荐
相关产品推荐

