EDATE 函数¶
函数概述¶
EDATE 用于在给定日期基础上,按照“月”为单位进行偏移,返回偏移后的日期。它常见于以下场景:
- 计算“从某日起往后/往前 N 个月”的日期(如合同到期日、试用期结束日、账期等)
- 按月滚动生成计划日期(每月同一天、或月底对齐后的日期)
- 与其他函数配合做动态日期区间(例如生成报表月份、计算下期结算日等)
EDATE 的核心特点是:以月份为单位移动日期,而不是简单加减天数。
基础语法¶
参数说明¶
| 参数 | 类型/形式 | 含义 | 说明 |
|---|---|---|---|
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 |
结果单元格输入:
这样改动 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)生成“下个月同日”的动态日期¶
含义:返回“从今天起下个月的同一天”。 适合:提醒下月回访、下月续费、下月发票日期等。
6)按“月份”批量生成计划节点¶
如果你有一个“起始日期”在 A2,并希望生成未来 12 个月的计划日期,可以在下方按行写入 1~12 的月偏移(比如 B3:B14 为 1 到 12),然后:
向下填充即可快速得到每个月对应日期。
总结¶
- EDATE 用于在日期上按“月”进行偏移,快速得到“前/后 N 个月”的日期。
months可正可负:正数往后、负数往前,非常适合做周期计划、合同/账期/提醒类日期计算。- 当目标月份天数不足以容纳原日期(如 31 号推到 2 月),EDATE 会自动落在该月的最后一天,特别适合做“月末对齐”的结算逻辑。
- 常与
TODAY()、DATE()、单元格引用结合,做成可复用的日期计算模板。