Menu

Excel 日期加天数、月数或年数

=A2+30 返回 A2 之后 30 天的日期。要加月数用 =EDATE(A2,3),求月末用 =EOMONTH(A2,0),加年数则用 EDATE,每年按 12 个月计算。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=A2+30 返回 A2 中日期之后 30 天的日期。Excel 把日期存储为天数,所以加上一个数字,就是把日期往后推那么多天。月份的长度各不相同,所以加月数要用 =EDATE(A2,3):三个月后的同一天。

开票 30 天后的到期日
B2
ABCD
1Invoice dateDue (30 days)Due (90 days)Two weeks later
22026-03-102026-04-092026-06-082026-03-24
32026-03-252026-04-242026-06-232026-04-08
42026-04-022026-05-022026-07-012026-04-16
52026-12-152027-01-142027-03-152026-12-29
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

一张日期为 2026-03-10 的发票,30 天后到期是 2026-04-09,90 天后到期是 2026-06-08。12 月的发票会自动跨到 2027 年,不需要额外处理。往回推就用减法:=A2-30 是 30 天之前。按周计算就用乘法:=A2+7*2 是两周之后。

用 EDATE 加月数

“一个月后”不是固定的天数,所以 +30 会产生偏差:从 2 月 1 日算起会落在 3 月 3 日。EDATE(start_date, months) 保持日期中的“日”不变,只改变月份。月数为负数时则往回推。

订阅续订日期
C2
ABCD
1StartMonthsRenewsReminder
22026-01-1512026-02-152026-01-15
32026-02-0132026-05-012026-04-01
42026-03-20122027-03-202027-02-20
52026-11-0562027-05-052027-04-05
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

从 2026-03-20 开始的年付套餐在 2027-03-20 续订,从 11 月开始的六个月套餐在 2027-05-05 续订。D 列在每次续订前一个月发送提醒。修改 B 列中的月数,看看日期如何变化。

如果开始日期中的“日”在目标月份中不存在,EDATE 会使用该月的最后一天。下面是 Excel 的结果:

=EDATE("2026-01-31", 1)    2026-02-28
=EDATE("2026-08-31", 1)    2026-09-30
=EDATE("2024-03-31", -1)   2024-02-29

给日期加年数

一年是 12 个月,所以 =EDATE(A2,12*B2) 会加上 B2 年。对于保修期、合同和纪念日,这样可以保持月和日不变。

保修到期日
C2
ABCD
1BoughtYearsWarranty endsWith DATE
22026-03-1422028-03-142028-03-14
32025-07-0152030-07-012030-07-01
42026-11-2832029-11-282029-11-28
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

两列给出的都是 2028-03-14、2030-07-01 和 2029-11-28。它们只在一个日期上不同:2 月 29 日。=DATE(2027,2,29) 会顺延到 2027-03-01,而 EDATE 返回 2027-02-28。

用 EOMONTH 求月末

EOMONTH(start_date, months) 返回某个月的最后一天:0 表示同一个月,1 表示下个月,-1 表示上个月。某个月的第一天就是上个月月末的后一天,即 EOMONTH(A2,-1)+1。

月末和月初
B2
ABCD
1DateEnd of monthEnd of next monthFirst of month
22026-02-102026-02-282026-03-312026-02-01
32024-02-102024-02-292024-03-312024-02-01
42026-12-312026-12-312027-01-312026-12-01
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

2026 年 2 月在 28 日结束,2024 年 2 月在 29 日结束。从 2026-12-31 算起,下个月的月末是 2027-01-31。“开票后次月月末付款”用的就是 EOMONTH 公式:=EOMONTH(A2,1)。如果要按工作日计算,用 WORKDAY:=WORKDAY(A2,10) 是 A2 之后的第 10 个工作日,会跳过周末(见 NETWORKDAYS 和 WORKDAY)。

练习:续订日期和月末

轮到你了:续订日期
C2
ABC
1StartMonthsRenews
22026-03-106
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中返回 A2 中的开始日期往后推 B2 个月的日期。

轮到你了:月末
B2
AB
1DateMonth end
22026-04-14
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B2 中返回 A2 中日期所在月份的最后一天。

常见错误:用 DATE 和 MONTH+1 加一个月

像 =DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)) 这样的公式看起来就是“一个月后”,而且大多数时候都是对的。但当下个月没有这一天时,DATE 不会停在月末,而是把多出来的天数顺延到再下一个月。

DATE 会顺延,EOMONTH 不会
B2
ABC
1DateMONTH+1 with DATEEnd of next month
22026-01-312026-03-032026-02-28
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

从 1 月 31 日算起,DATE 公式返回 2026-03-03,因为“2 月 31 日”比 2 月 28 日多出三天。EDATE 返回 2026-02-28;如果你想要的就是月末,EOMONTH 能直接给出。关于 DATE 如何处理超出范围的月和日,详见 DATE 函数。

常见问题

如何在 Excel 中给日期加天数?

直接加上数字:=A2+30 是 A2 中日期之后 30 天,=A2-30 是之前 30 天。Excel 把日期存储为天数,所以普通的加法可以跨月、跨年。

如何在 Excel 中给日期加月数?

用 EDATE:=EDATE(A2,3) 返回三个月后的同一天,=EDATE(A2,-3) 返回三个月前的同一天。如果那一天不存在,EDATE 会使用该月的最后一天:=EDATE("2026-01-31",1) 是 2026-02-28。

如何在 Excel 中求某月的最后一天?

=EOMONTH(A2,0) 返回 A2 所在月份的最后一天。=EOMONTH(A2,1) 是下个月的月末,=EOMONTH(A2,-1)+1 是 A2 所在月份的第一天。

如何在 Excel 中给日期加年数?

=EDATE(A2,12*5) 加五年。=DATE(YEAR(A2)+5,MONTH(A2),DAY(A2)) 也可以,但在非闰年会把 2 月 29 日变成 3 月 1 日,而 EDATE 给出的是 2 月 28 日。

为什么日期加天数后显示的是数字而不是日期?

结果单元格的格式是“常规”或“数值”,所以日期显示成了它的序列号,比如 46126。选中它,选择“开始 > 数字格式 > 短日期”。

Coddy 编程语言插图

和 Coddy 一起学编程

开始