警告: Excel 提供了 DATEDIF 函数,以便支持来自 Lotus 1-2-3 的旧版工作簿。 在某些应用场景下,DATEDIF 函数计算结果可能并不正确。 有关详细信息,请转到 DATEDIF 函数一文的已知问题部分 。
若要计算两个日期之间的差值,请使用 DATEDIF 函数。 首先将开始日期放入一个单元格,并将结束日期置于另一个单元格。 然后键入一个如下所示的公式。
注意: 如果 Start_date 大于 End_date,结果将会是 #NUM!。
以天为单位的差值

在此示例中,开始日期在单元格 D9 中,结束日期在 E9 中。 公式在 F9 中。 “d” 会返回两个日期之间的完整天数。
以周为单位的差值

在此示例中,开始日期在单元格 D13 中,结束日期在 E13 中。 “d” 会返回天数。 但请注意结尾处的 /7。 这会将天数除以 7,因为一周有 7 天。 请注意,此结果也需要设置为数值格式。 按 Ctrl + 1。 然后单击“数值”>“小数位数:2”。
以月为单位的差值

在此示例中,开始日期在单元格 D5 中,结束日期在 E5 中。 在公式中,“m” 会返回两个日期之间的完整月数。
以年为单位的差值

在此示例中,开始日期在单元格 D2 中,结束日期在 E2 中。 “y” 会返回两个日期之间的完整年数。
以累积的年数、月数和天数计算年龄
还可以计算年龄或某人的服务时间。 结果可能类似于“2 年,4 个月,5 天”。
1.使用 DATEDIF 求得总年数。

在此示例中,开始日期在单元格 D17 中,结束日期在 E17 中。 在公式中,“y” 会返回两个日期之间的完整年数。
2.再次使用 DATEDIF,并附带 “ym”,以求得月数。

在另一个单元格中,使用带有 “ym” 参数的 DATEDIF 公式。 “ym” 会返回过去整整一年剩余的月数。
3.使用其他公式求得天数。

现在,我们需要求得剩余的天数。 我们将通过编写其他类型的公式来实现此目的,如上所示。 此公式从单元格 E17 中的原始结束日期 (5/6/2016) 减去当月第一天 (5/1/2016)。 其原理如下:首先,DATE 函数会创建日期 5/1/2016。 DATE 函数使用单元格 E17 中的年份和单元格 E17 中的月份创建日期。 1 表示该月的第一天。 DATE 函数的结果是 5/1/2016。 然后,从单元格 E17 中的原始结束日期(即 5/6/2016)减去该日期。 5/6/2016 减 5/1/2016 得 5 天。
警告: 不建议使用 DATEDIF "md" 参数,因为它可能会得出不准确的计算结果。
4.可选方案:将三个公式合并为一个。

可以将所有三个计算放入一个单元格中,如本例所示。 使用 & 符号、引号和文本。 这需要输入一个较长的公式,但它至少将所有内容都集中在一起。 提示: 按 ALT + ENTER 可在公式中放入换行符。 这将使其更易于阅读。 此外,如果看不到完整的公式,请按 CTRL+SHIFT+U。
下载我们的示例
你可以下载包含本文中所有示例的示例工作簿。 可以沿用其中的公式,也可以自行创建。下载日期计算示例
其他日期和时间计算
如上所述,DATEDIF 函数可计算开始日期和结束日期之间的差值。 但是,你也可以在公式中使用 TODAY() 函数,而不是键入具体的日期。 当你使用 TODAY() 函数时,Excel 将使用你计算机的当前日期作为日期。 请记住,未来某一天再次打开该文件时,该日期将会发生变化。

请注意,在撰写本文时,日期是 2016 年 10 月 6 日。
如果要计算两个日期之间的工作日天数,请使用 NETWORKDAYS.INTL 函数。 此外,还可以让其排除周末和假日。
准备阶段:确定是否要排除假日日期。 如果要排除,请在单独的区域或工作表中键入假日日期列表。 将每个假日日期置于各自的单元格中。 然后选择这些单元格,选择“公式”>“定义名称”。 将该范围命名为 MyHolidays,然后单击“确定”。 然后按照下面的步骤创建公式。
1.键入开始日期和结束日期。

在此示例中,开始日期在单元格 D53 中,结束日期在 E53 中。
2.在另一个单元格中,键入如下公式:

键入类似于上述示例的公式。 公式中的 1 将星期六和星期日确立为周末,并从总计中排除。
3.如有必要,请更改 1。

如果星期六和星期日不是周末,则将 1 更改为 IntelliSense 列表中的其他数字。 例如,2 将星期日和星期一确立为周末。
4.键入假日范围名称。

如果你在上面的“准备阶段”部分中创建了假日范围名称,请将其按如下所示在末尾键入。 如果没有假日,可省略逗号和 MyHolidays。
可以通过从一个时间中减去另一个时间来计算经过的时间。 首先将开始时间放入一个单元格,并将结束时间置于另一个单元格。 请确保键入完整的时间,包括小时和分钟数,并在 AM 或 PM 之前留一个空格。 操作方式如下:
1. 键入开始时间和结束时间。

在此示例中,开始时间在单元格 D80 中,结束时间在 E80 中。 请确保键入小时和分钟数,并在 AM 或 PM 之前留一个空格。
2.设置“h:mm AM/PM”格式。

选择这两个日期,然后按 CTRL + 1(或 Mac 上的
3.将两个时间相减。

在另一个单元格中,从结束时间单元格中减去开始时间单元格。
4.设置“h:mm”格式。

按 CTRL + 1(或 Mac 上的
若要计算两个日期和时间之间的时间,只需从一个日期和时间中减去另一个日期和时间。 但是,必须对每个单元格应用格式设置,以确保 Excel 返回所需的结果。
1.键入两个完整的日期和时间。

在一个单元格中,键入完整的开始日期/时间。 在另一个单元格中,键入完整的结束日期/时间。 每个单元格都应包含月、日、年、小时和分钟数,并在 AM 或 PM 之前留一个空格。
2.设置“2012-3-14 1:30 PM”格式。

选择这两个单元格,然后按 CTRL + 1(或 Mac 上的
3.将两者相减。

在另一个单元格中,从结束日期/时间中减去开始日期/时间。 结果可能会显示为数字和小数。 你将在下一步中修复此问题。
4.设置“[h]:mm”格式。
![“设置单元格格式”对话框,“自定义”命令,“[h]:mm”类型](https://cxcs.microsoft.net/static/public/centralimages/zh-cn/2edbd461-d4c5-49a7-a5a2-b6d9329c0411/c1f670c6075d30a36d1ecc5cd55e2461e66d124e.png)
按 CTRL + 1(或 Mac 上的
相关主题
DATEDIF 函数 NETWORKDAYS.INTL 函数 NETWORKDAYS 更多日期和时间函数 计算两个时间之间的差值