位置:首页 > 综合教程 > Excel中DATEDIF函数计算两个日期相差月数的方法

Excel中DATEDIF函数计算两个日期相差月数的方法

时间:2026-05-31  |  作者:318050  |  阅读:0

计算两个日期之间的完整月数,是Excel里最常见的场景之一——员工工龄、项目周期、合同剩余时间,全都离不开它。

但很多人在这一步踩过坑:直接用年份差乘12再加上月份差,结果往往多一个月或少一个月,因为日期的“日”部分被忽略了。

要准确算出“从今天到那一天,满了多少个月”,必须用能自动处理日偏差的函数。先分享我最推荐的办法:DATEDIF,这是Excel专门为日期间隔设计的隐藏函数,结果严格按“完整月”定义——从起始日期出发,每过一个自然月才计1个月,不足的部分直接忽略。

Excel怎么计算两个日期之间的月数 DATEDIF函数用法教程

用DATEDIF函数直接计算整月数

操作其实很简单。在目标单元格里输入公式:=DATEDIF(开始日期,结束日期,"m")

把“开始日期”换成你表格里起始日期所在的单元格(比如A2),把“结束日期”换成终止日期所在的单元格(比如B2)。注意——起始日期必须早于结束日期,否则会返回#NUM!错误。

按下回车键,结果就出来了。举个例子:从2025年3月15日到2026年5月14日,DATEDIF返回13个月;但到2026年5月15日,就变成14个月了。

关键就在这里:多这一天,就多出整整一个月。DATEDIF的判断标准非常“硬核”,不会因为你只差一天就网开一面。

当DATEDIF不可用时的替代方案

有的Excel版本或动态数组环境中,DATEDIF可能被禁用。别慌,还有后备方案——用YEAR和MONTH组合推算,但要手动处理日偏差。

方法一:基础公式

输入公式:=(YEAR(结束日期)-YEAR(开始日期))*12+MONTH(结束日期)-MONTH(开始日期),替换对应的单元格引用即可。

这个公式先算年份差对应的月数,再补上同年内的月份差。看起来没问题——但它不管“日”的部分,所以会高估实际月数。

方法二:带日校正的健壮公式

先算出基础月数,再判断是否需要减1:如果结束日期的“日”小于开始日期的“日”,说明还没满一个月,结果减1。

完整公式长这样:
= (YEAR(B2)-YEAR(A2))*12 + MONTH(B2)-MONTH(A2) - (DAY(B2)

最后这个(DAY(B2)是神来之笔:条件成立时返回TRUE(即1),自动减去1个月;不成立时返回FALSE(即0),不影响结果。

这样比嵌套一连串IF判断要干净利落得多,也避免了手动核对的疏漏。

验证结果是否准确

算出来的月数准不准?最可靠的验证手段是用EDATE函数反向推算——它能直接暴露DATEDIF在边界日期上的偏差。

第一步:输入公式

在空白单元格输入公式:=EDATE(开始日期,DATEDIF(开始日期,结束日期,"m")),替换对应单元格引用。

第二步:观察结果

观察EDATE返回的日期。如果这个日期大于结束日期,说明DATEDIF多算了1个月,原始结果应该减1。

举个例子:起始日是2025年1月31日,结束日是2026年2月28日。DATEDIF返回13,但EDATE(2025/1/31,13)算出的是2026年2月31日——Excel会自动把它转为2026年3月3日,明显超过了结束日2月28日。所以正确的月数应该是12,而不是13。这个验证方法屡试不爽,强烈建议在复杂日期计算后用一下。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

精选合集

更多

大家都在玩