1
场景背景
合同管理最怕漏掉到期日。台账里通常只有签订日期和期限月数,到期日要自己算。EDATE 按月推进,能自动处理「1 月 31 日加一个月是 2 月 28/29 日」这种边界;EOMONTH 则用来处理按月底到期的合同。
2
数据结构
共 1 个 Sheet3
解决步骤
1
第 1 步:EDATE 算到期日
签订日期 + 期限月数。1 月 31 日 + 1 个月会得到 2 月末,这是 Excel 的月末对齐规则。
=EDATE(C2,D2)
2
第 2 步:按月底到期的用 EOMONTH
如果合同约定「到期日为当月最后一天」,用 EOMONTH(签订日, 月数)。
=EOMONTH(C2,D2)
3
第 3 步:算剩余天数
到期日 - TODAY(),负数是已过期。
=E2-TODAY()
4
第 4 步:判断是否月末到期
DAY(到期日)=DAY(EOMONTH(到期日,0)) 为 TRUE 说明正好是月末。
=DAY(E2)=DAY(EOMONTH(E2,0))
4
完整公式与逐段拆解
=EDATE(C2,D2)
C2签订日期D2期限月数,写 12 就是一年EDATE按月推进,自动处理大小月和月末对齐| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | 合同号 | 客户 | 签订日期 | 期限(月) | 到期日 | 金额 | 剩余天数 | 状态 |
| 2 | HT-001 | 甲公司 | 2024-01-31 | 12 | 2025-01-31 | 120000 | -636 | 已到期 |
| 3 | HT-002 | 乙公司 | 2024-06-15 | 6 | 2024-12-15 | 56000 | -683 | 已到期 |
| 4 | HT-003 | 丙公司 | 2023-12-01 | 24 | 2025-12-01 | 240000 | -332 | 已到期 |
| 5 | HT-004 | 丁公司 | 2024-03-20 | 12 | 2025-03-20 | 88000 | -588 | 已到期 |
当前表:合同台账 · 公式单元格 E2 · 绿色底为公式,蓝色底为动态数组溢出结果
台账 E 列由 EDATE 算出到期日,G 列算剩余天数
6
数据流向
数据流向演示1 / 4
来源合同台账!C2
➜
去向EDATE
签订日期
来源合同台账!D2
→
去向EDATE
期限 12 个月
来源EDATE
→
去向E2
得到到期日
来源E2-TODAY()
→
去向G2
与今天比较算剩余天数
跟着高亮一步步看数据怎么流动
7
注意事项与坑
!EDATE 结果要设日期格式,否则显示 45678 这样的数字。
!期限写「1 年」这种文字没法参与计算,必须先转成 12 个月。
!跨多份合同批量算时,注意期限列有没有空值,空值会当成 0 个月。
8