跳转至

EDATE 函数

函数概述

EDATE 用于在给定日期基础上,按照“月”为单位进行偏移,返回偏移后的日期。它常见于以下场景:

  • 计算“从某日起往后/往前 N 个月”的日期(如合同到期日、试用期结束日、账期等)
  • 按月滚动生成计划日期(每月同一天、或月底对齐后的日期)
  • 与其他函数配合做动态日期区间(例如生成报表月份、计算下期结算日等)

EDATE 的核心特点是:以月份为单位移动日期,而不是简单加减天数。


基础语法

=EDATE(start_date, months)

参数说明

参数 类型/形式 含义 说明
start_date 日期或可被识别为日期的值/引用 起始日期 可以直接写日期、引用单元格,或使用 DATE 等函数生成日期
months 整数(可为负)或引用 偏移月数 正数表示往后推,负数表示往前推;如 1 表示下个月同日,-3 表示往前三个月

返回结果为日期序列值,请确保结果单元格格式为“日期”,以便直观看到日期。


基础用法示范

下面示例默认你已经将单元格设置为日期显示格式。

1)往后推 N 个月

场景 公式 结果含义
从 2026-01-16 往后推 2 个月 =EDATE(DATE(2026,1,16), 2) 返回 2026-03-16

适合:账期+2个月、交付日+6个月等。


2)往前推 N 个月

场景 公式 结果含义
从 2026-01-16 往前推 3 个月 =EDATE(DATE(2026,1,16), -3) 返回 2025-10-16

适合:回溯三个月数据区间起点、计算上季度起始月份等。


3)用单元格作为参数

假设:

数据源 示例值
起始日期 A2 2026-01-16
偏移月数 B2 6

结果单元格输入:

=EDATE(A2, B2)

这样改动 A2 或 B2,就能自动更新目标日期。


4)月底对齐:处理“月末滚动”的常见需求

当起始日期是月末(例如 1 月 31 日),往后推月份时,目标月份可能没有 31 日,此时 EDATE 会返回该月的最后一天

场景 公式 结果含义
2026-01-31 往后推 1 个月 =EDATE(DATE(2026,1,31), 1) 返回 2026-02-28(或闰年为 2/29)
2026-03-31 往后推 1 个月 =EDATE(DATE(2026,3,31), 1) 返回 2026-04-30

适合:按“月末结算日”滚动生成每月结算日期。


5)生成“下个月同日”的动态日期

=EDATE(TODAY(), 1)

含义:返回“从今天起下个月的同一天”。 适合:提醒下月回访、下月续费、下月发票日期等。


6)按“月份”批量生成计划节点

如果你有一个“起始日期”在 A2,并希望生成未来 12 个月的计划日期,可以在下方按行写入 1~12 的月偏移(比如 B3:B14 为 1 到 12),然后:

=EDATE($A$2, B3)

向下填充即可快速得到每个月对应日期。


总结

  • EDATE 用于在日期上按“月”进行偏移,快速得到“前/后 N 个月”的日期。
  • months 可正可负:正数往后、负数往前,非常适合做周期计划、合同/账期/提醒类日期计算。
  • 当目标月份天数不足以容纳原日期(如 31 号推到 2 月),EDATE 会自动落在该月的最后一天,特别适合做“月末对齐”的结算逻辑。
  • 常与 TODAY()DATE()、单元格引用结合,做成可复用的日期计算模板。