Applies ToMicrosoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

Excel 提供了 DATEDIF 函数,以便支持来自 Lotus 1-2-3 的旧版工作簿。 在某些应用场景下,DATEDIF 函数计算结果可能并不正确。 有关详细信息,请转到 DATEDIF 函数一文的已知问题部分

若要计算两个日期之间的差值,请使用 DATEDIF 函数。 首先将开始日期放入一个单元格,并将结束日期置于另一个单元格。 然后键入一个如下所示的公式。

如果 Start_date 大于 End_date,结果将会是 #NUM!

以天为单位的差值

=DATEDIF(D9,E9,"d"),结果为 856

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

以周为单位的差值

=(DATEDIF(D13,E13,"d")/7) 并且结果为:122.29

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

以月为单位的差值

=DATEDIF(D5,E5,"m") 并且结果为:28

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

以年为单位的差值

=DATEDIF(D2,E2,"y") 并且结果为:2

在此示例中,开始日期在单元格 D2 中,结束日期在 E2 中。 “y” 会返回两个日期之间的完整年数。

以累积的年数、月数和天数计算年龄

还可以计算年龄或某人的服务时间。 结果可能类似于“2 年,4 个月,5 天”。

1.使用 DATEDIF 求得总年数。

=DATEDIF(D17,E17,"y") 并且结果为:2

在此示例中,开始日期在单元格 D17 中,结束日期在 E17 中。 在公式中,“y” 会返回两个日期之间的完整年数。

2.再次使用 DATEDIF,并附带 “ym”,以求得月数。

=DATEDIF(D17,E17,"ym") 并并且结果为:4

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

3.使用其他公式求得天数。

=DATEDIF(D17,E17,"md") 并且结果为:5

现在,我们需要求得剩余的天数。 我们将通过编写其他类型的公式来实现此目的,如上所示。 此公式从单元格 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.可选方案:将三个公式合并为一个。

=DATEDIF(D17,E17,"y")&" years,"&DATEDIF(D17,E17,"ym")&" months,"&DATEDIF(D17,E17,"md")&" days" 并且结果为:2 年,4 个月,5 天

可以将所有三个计算放入一个单元格中,如本例所示。 使用 & 符号、引号和文本。 这需要输入一个较长的公式,但它至少将所有内容都集中在一起。 提示: 按 ALT + ENTER 可在公式中放入换行符。 这将使其更易于阅读。 此外,如果看不到完整的公式,请按 CTRL+SHIFT+U。

下载我们的示例

你可以下载包含本文中所有示例的示例工作簿。 可以沿用其中的公式,也可以自行创建。下载日期计算示例

其他日期和时间计算

如上所述,DATEDIF 函数可计算开始日期和结束日期之间的差值。 但是,你也可以在公式中使用 TODAY() 函数,而不是键入具体的日期。 当你使用 TODAY() 函数时,Excel 将使用你计算机的当前日期作为日期。 请记住,未来某一天再次打开该文件时,该日期将会发生变化。

=DATEDIF(TODAY(),D28,"y") 并且结果为:984

请注意,在撰写本文时,日期是 2016 年 10 月 6 日。

如果要计算两个日期之间的工作日天数,请使用 NETWORKDAYS.INTL 函数。 此外,还可以让其排除周末和假日。

准备阶段:确定是否要排除假日日期。 如果要排除,请在单独的区域或工作表中键入假日日期列表。 将每个假日日期置于各自的单元格中。 然后选择这些单元格,选择“公式”>“定义名称”。 将该范围命名为 MyHolidays,然后单击“确定”。 然后按照下面的步骤创建公式。

1.键入开始日期和结束日期。

单元格 D53 中的开始日期为 2016-1-1,结束日期在单元格 E53 中,为 2016-12-31

在此示例中,开始日期在单元格 D53 中,结束日期在 E53 中。

2.在另一个单元格中,键入如下公式:

=NETWORKDAYS.INTL(D53,E53,1) 并且结果为:261

键入类似于上述示例的公式。 公式中的 1 将星期六和星期日确立为周末,并从总计中排除。

3.如有必要,请更改 1。

显示“2 - 星期日、星期一”、“3 - 星期一、星期二”等的 IntelliSense 列表

如果星期六和星期日不是周末,则将 1 更改为 IntelliSense 列表中的其他数字。 例如,2 将星期日和星期一确立为周末。

4.键入假日范围名称。

=NETWORKDAYS.INTL(D53,E53,1,MyHolidays) 并且结果为:252

如果你在上面的“准备阶段”部分中创建了假日范围名称,请将其按如下所示在末尾键入。 如果没有假日,可省略逗号和 MyHolidays。

可以通过从一个时间中减去另一个时间来计算经过的时间。 首先将开始时间放入一个单元格,并将结束时间置于另一个单元格。 请确保键入完整的时间,包括小时和分钟数,并在 AM 或 PM 之前留一个空格。 操作方式如下:

1. 键入开始时间和结束时间。

开始日期/时间为 7:15 AM,结束日期/时间为 4:30 PM

在此示例中,开始时间在单元格 D80 中,结束时间在 E80 中。 请确保键入小时和分钟数,并在 AM 或 PM 之前留一个空格

2.设置“h:mm AM/PM”格式。

“设置单元格格式”对话框,“自定义”命令,“h:mm AM/PM”类型

选择这两个日期,然后按 CTRL + 1(或 Mac 上的 MAC Command 按钮图标的图像 + 1)。 请确保选择“自定义”>“h:mm AM/PM”(如果尚未设置)。

3.将两个时间相减。

=E80-D80 并且结果为:上午 9:15

在另一个单元格中,从结束时间单元格中减去开始时间单元格。

4.设置“h:mm”格式。

“设置单元格格式”对话框,“自定义”命令,“h:mm”类型

按 CTRL + 1(或 Mac 上的 MAC Command 按钮图标的图像 + 1)。 选择“自定义”>“h:mm”,以便结果中不包括 AM 和 PM。

若要计算两个日期和时间之间的时间,只需从一个日期和时间中减去另一个日期和时间。 但是,必须对每个单元格应用格式设置,以确保 Excel 返回所需的结果。

1.键入两个完整的日期和时间。

开始日期为 2016-1-1 1:00 PM;结束日期为 2016-1-2 2:00 PM

在一个单元格中,键入完整的开始日期/时间。 在另一个单元格中,键入完整的结束日期/时间。 每个单元格都应包含月、日、年、小时和分钟数,并在 AM 或 PM 之前留一个空格

2.设置“2012-3-14 1:30 PM”格式。

“设置单元格格式”对话框,“日期”命令,“2012-3-14 1:30 PM”类型

选择这两个单元格,然后按 CTRL + 1(或 Mac 上的 MAC Command 按钮图标的图像 + 1)。 然后选择“日期”>“2012-3-14 1:30 PM”。 这不是你要设置的日期,只是显示格式的示例。 请注意,在 Excel 2016 之前的版本中,此格式可能有不同的示例日期,如 2001/3/14 1:30 PM。

3.将两者相减。

=E84-D84 并且结果为 1.041666667

在另一个单元格中,从结束日期/时间中减去开始日期/时间。 结果可能会显示为数字和小数。 你将在下一步中修复此问题。

4.设置“[h]:mm”格式。

“设置单元格格式”对话框,“自定义”命令,“[h]:mm”类型

按 CTRL + 1(或 Mac 上的 MAC Command 按钮图标的图像 + 1)。 选择“自定义”。 在“类型”框中,键入“[h]:mm”。

相关主题

DATEDIF 函数 NETWORKDAYS.INTL 函数 NETWORKDAYS 更多日期和时间函数 计算两个时间之间的差值

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。