KutoolsforOffice — 一套方案,五大工具。事半功倍。

Excel 教程:日期时间计算(计算差值、年龄、加减运算)

作者修改日期

在 Excel 中,日期时间计算应用广泛,例如计算两个日期或时间之间的差值、对日期时间进行加减运算,以及根据出生日期推算年龄等。本教程几乎涵盖所有常见的日期时间计算场景,并为您提供实用的解决方法。

本教程导航

1. 计算两个日期/时间之间的差值

1.1 计算两个日期之间的天/月/年差值

1.11 计算两个日期之间的天数/月数/年数/周数差值

1.12 忽略年份和天数,仅计算两个日期之间的月数差值

1.13 忽略年份和月份,仅计算两个日期之间的天数差值

1.14 计算两个日期之间的差值,并返回年、月和天

1.15 计算指定日期与今天的差值

1.16 计算两个日期之间的工作日数量(可选择是否包含节假日)

1.17 计算两个日期之间的周末天数

1.18 计算两个日期之间特定星期几的出现次数

1.19 计算某月/某年中的可用天数

1.2 计算两个时间之间的差值

1.21 计算两个时间之间的差值

1.22 计算两个时间之间的小时/分钟/秒差值

1.23 仅计算两个时间之间的小时差值(不超过 24 小时)

1.24 仅计算两个时间之间的分钟差值(不超过 60 分钟)

1.25 仅计算两个时间之间的秒差值(不超过 60 秒)

1.26 计算两个时间之间的差值,并返回小时、分钟和秒

1.27 计算两个日期时间之间的差值

1.28 计算包含毫秒的时间差值

1.29 计算两个日期之间排除周末的工作时间

1.3 使用 Kutools for Excel 计算两个日期时间之间的差值

1.31 通过“日期和时间助手”计算两个日期时间之间的差值

1.32 通过公式助手计算两个日期时间之间周末/工作日/特定星期几的差值

1.4 如果为空则合并两列

1.41 使用 IF 函数

1.42 使用 VBA

2. 增加或减去日期和时间

2.1 为日期增加或减去天数/月数/年数/周数/工作日

2.11 为日期增加或减去天数

2.12 为日期增加或减去月数

2.13 为日期增加或减去年数

2.14 为日期增加或减去周数

2.15 增加或减去工作日(可选择是否包含节假日)

2.16 为日期增加或减去指定的年、月、日

2.2 为时间增加或减去小时/分钟/秒

2.21 为日期时间增加或减去小时/分钟/秒

2.22 对超过 24 小时的时间求和

2.23 为日期增加工作时间(排除周末和节假日)

2.3 使用 Kutools for Excel 增加或减去日期/时间

2.4 扩展功能

2.41 检查或高亮显示日期是否已过期

2.42 返回当前月的最后一天/下个月的第一天

3. 计算年龄

3.1 根据日期计算年龄

3.11 根据给定的出生日期计算年龄

3.12 根据给定的生日以年、月、日格式计算年龄

3.13 根据 1/1/1900 之前的出生日期计算年龄

3.2 使用 Kutools for Excel 根据出生日期计算年龄

3.3 根据序列号计算年龄或获取出生日期

3.31 从身份证号码中提取出生日期

3.32 根据身份证号码计算年龄

 

在本教程中,我创建了一些示例来演示这些方法,您在使用以下 VBA 代码或公式时,可根据需要调整引用。


1 计算两个日期/时间之间的差值

计算两个日期或时间之间的差值,可能是您在日常 Excel 工作中最常遇到的日期时间计算问题。参考以下示例,将帮助您在遇到类似情况时显著提升效率。

1.1 计算两个日期之间的天/月/年差值

1.11 以天/月/年/周为单位计算两个日期之间的差值

Excel 的 DATEDIF 函数可快速计算两个日期之间相差的天数、月数、年数或周数。
计算两个日期之间的天/月/年差值

单击此处了解有关 DATEDIF 函数的更多详情

两个日期之间的天数差值

DATEDIF(start_date,end_date,"d")

要获取 A2 和 B2 单元格中两个日期之间的天数差值,请使用如下公式:

=DATEDIF(A2,B2,"d")

按下 Enter 键即可获取结果。
计算两个日期之间的天数差值

两个日期之间的月数差值

DATEDIF(start_date,end_date,"m")

要获取 A5 和 B5 单元格中两个日期之间的月数差值,请使用如下公式:

=DATEDIF(A5,B5,"m")

按下 Enter 键即可获取结果。
计算两个日期之间的月数差值

两个日期之间的年数差值

DATEDIF(start_date,end_date,"y")

要获取 A8 和 B8 单元格中两个日期之间的年数差值,请使用如下公式:

=DATEDIF(A8,B8,"y")

按下 Enter 键即可获取结果。
计算两个日期之间的年数差值

两个日期之间的周数差值

DATEDIF(start_date,end_date,"d")/7

要获取 A11 和 B11 单元格中两个日期之间的周数差值,请使用如下公式:

=DATEDIF(A11,B11,"d")/7

按下 Enter 键,立即获取结果!
计算两个日期之间的周数差值

注意:

1) 使用上述公式计算周数差值时,结果可能以日期格式显示,请根据需要将单元格格式设置为“常规”或“数值”。

2) 当您使用上述公式计算周数差值时,结果可能为小数。若希望获得整数周数,可在公式前添加 ROUNDDOWN 函数,如下所示,即可得到整数周数差值:

=ROUNDDOWN(DATEDIF(A11,B11,"d")/7,0)

1.12 忽略年份和天数,仅计算两个日期之间的月数差值

如果您只想计算两个日期之间忽略年份和天数的月数差值(如下图所示),以下公式即可满足您的需求。

=DATEDIF(A2,B2,"ym")

按下 Enter 键即可获取结果。
计算两个日期之间忽略年份和天数的月数差值

A2 为开始日期,B2 为结束日期。

1.13 忽略年份和月份,仅计算两个日期之间的天数差值

如果您只想计算两个日期之间忽略年份和月份的天数差值(如下图所示),以下公式即可满足您的需求。

=DATEDIF(A5,B5,"md")

按下 Enter 键即可获取结果。
计算两个日期之间忽略年份和月份的天数差值

A5 为开始日期,B5 为结束日期。

1.14 计算两个日期之间的差值并返回年、月和天

如果您希望计算两个日期之间的差值,并以“xx 年 xx 月 xx 天”的格式返回(如下图所示),下方也提供了一个公式。

=DATEDIF(A8, B8, "y") &" years, "&DATEDIF(A8, B8, "ym") &" months, " &DATEDIF(A8, B8, "md") &" days"

按下 Enter 键,立即获取结果。
计算两个日期之间的差值,并返回年、月和天

A8 为开始日期,B8 为结束日期。

1.15 计算某日期与今天的差值

要自动计算某日期与今天的差值,只需将上述公式中的 end_date 替换为 TODAY()。以下以计算过去某日期距今的天数为例进行说明。
计算某日期与今天的差值

=DATEDIF(A11,TODAY(),"d")

按下 Enter 键即可获取结果。

注意:如果您要计算未来某日期与今天的差值,请将 start_date 改为 today,并将未来日期作为 end_date,如下所示:

=DATEDIF(TODAY(),A14,"d")
计算未来日期与今天的差值

请注意,在 DATEDIF 函数中,start_date 必须早于 end_date,否则将返回 #NUM! 错误。

1.16 计算两个日期之间包含或不包含节假日的工作日天数

有时,您可能需要统计两个指定日期之间的工作日天数,并可选择是否包含节假日。
计算两个日期之间包含或不包含节假日的工作日天数

在本部分,您将使用 NETWORKDAYS.INTL 函数:

NETWORKDAYS.INTL(start_date,end_date,[weekend],[holiday])

单击 NETWORKDAYS.INTL,即可了解其参数和用法。

统计包含节假日的工作日天数

要统计 A2 和 B2 单元格中两个日期之间包含节假日的工作日天数,请使用如下公式:

=NETWORKDAYS.INTL(A2,B2)

按下 Enter 键即可获取结果。
统计包含节假日的工作日天数

统计不包含节假日的工作日天数

要统计 A2 和 B2 单元格中两个日期之间的工作日天数,并排除 D5:D9 区域中的节假日,请使用如下公式:

=NETWORKDAYS.INTL(A5,B5,1,D5:D9)

按下 Enter 键即可获取结果。
统计不包含节假日的工作日天数

注意:

在上述公式中,默认将周六和周日视为周末。如您的周末安排不同,请根据实际需求调整 【weekend】 参数。
如果周末不是周六日,请更改 weekend 参数

1.17 计算两个日期之间的周末天数

想统计两个日期之间的周末天数(周六和周日)?SUMPRODUCT 或 SUM 函数就能轻松帮您搞定!

SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start_date&":"&end_date)),2)>5))
SUM(INT((WEEKDAY(start_date-{1,7})+end_date-start+date)/7))

要统计 A12 和 B12 单元格中两个日期之间的周末天数(周六和周日):

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A12&":"&B12)),2)>5))

=SUM(INT((WEEKDAY(A 12-{1,7})+B 12-A12)/7))

按下 Enter 键,立即获取结果!
计算两个日期之间的周末天数

1.18 计算两个日期之间特定星期几的出现次数

要统计两个日期之间特定星期几(例如星期一)的出现次数,只需结合使用 INT 和 WEEKDAY 函数即可轻松实现。

INT((WEEKDAY(start_date- weekday)-start_date +end_date)/7)

A15 和 B15 单元格为要统计其间星期一数量的两个日期,请使用如下公式:

=INT((WEEKDAY(A 15- 2)-A15 +B15)/7)

按下 Enter 键即可获取结果。
计算两个日期之间特定星期几的出现次数

更改 WEEKDAY 函数中的星期几编号即可统计其他星期几:

1 表示星期日,2 表示星期一,3 表示星期二,4 表示星期三,5 表示星期四,6 表示星期五,7 表示星期六)

1.19 计算某月/某年中的可用天数

有时,您可能需要根据提供的日期确定该月或该年的可用天数,如下图所示:
计算当月或当年剩余天数

获取当前月份的可用天数

EOMONTH(date,0)-date

单击 EOMONTH,即可了解其参数和用法。

要在单元格 A2 中获取当前月份的可用天数,请使用以下公式:

=EOMONTH(A2,0)-A2

Enter 键后,如有需要,可拖动自动填充柄将此公式应用到其他单元格。
获取当前月份剩余天数

提示:结果可能以日期格式显示,只需将其格式更改为常规或数值即可。

获取当前年份的可用天数

DATE(YEAR(date),12,31)-date

要在单元格 A2 中获取当前年份的可用天数,请使用以下公式:

=DATE(YEAR(A2),12,31)-A2

Enter 键后,如有需要,可拖动自动填充柄将此公式应用到其他单元格。
获取当前年份剩余天数


1.2 计算两个时间之间的差值

1.21 计算两个时间之间的差值

要计算两个时间之间的差值,以下两个简单公式可助您轻松搞定。

end_time-start_time
TEXT(end_time-first_time,"time_format")

假设单元格 A2 和 B2 分别包含开始时间和结束时间,请使用以下公式:

=B 2-A2

=TEXT(B 2-A2,"hh:mm:ss")

按下 Enter 键,立即获取结果!
计算两个时间之间的差值

注意:

  • 如果使用 end_time - start_time,您可以在“设置单元格格式”对话框中将结果调整为您所需的其他时间格式。
  • 如果使用 TEXT(end_time-first_time,"time_format"),请在公式中输入您希望结果显示的时间格式,例如 TEXT(end_time-first_time,"h") 将返回 16.
  • 如果 end_time 小于 start_time,上述两种公式都会返回错误值。为解决此问题,您可以在这些公式前添加 ABS,例如 ABS(B 2-A2) 或 ABS(TEXT(B 2-A2,“hh:mm:ss“)),然后将结果设置为时间格式。

1.22 以小时/分钟/秒为单位计算两个时间之间的差值

如果您希望以小时、分钟或秒为单位计算两个时间之间的差值(如下图所示),请参阅本部分内容。
计算两个时间之间的小时/分钟/秒差值

获取两个时间之间的小时差

INT((end_time-start_time)*24)

要获取 A5 和 B5 中两个时间之间的小时差,请使用以下公式:

=INT((B 5-A5)*24)

按下 Enter 键,即可将时间格式结果设置为常规或数值格式。
获取两个时间之间的小时差值

若需获取带小数的小时差,请使用公式:(结束时间 - 开始时间) × 24.

获取两个时间之间的分钟差

INT((end_time-start_time)*1440)

要获取 A8 和 B8 中两个时间之间的分钟差,请使用以下公式:

=INT((B 8-A8)*1440)

按下 Enter 键后,将时间格式结果设置为常规或数值格式。
获取两个时间之间的分钟差值

若需获取带小数的分钟差,请使用公式:(结束时间 - 开始时间) × 1440.

获取两个时间之间的秒差

(end_time-start_time)*86400

要获取 A5 和 B5 中两个时间之间的秒差,请使用以下公式:

=(B 11-A11)*86400)

按下 Enter 键,即可将时间格式结果设置为常规或数值格式。
获取两个时间之间的秒差值

1.23 仅计算两个时间之间的小时差值(不超过 24 小时)

若两个时间的差值不超过 24 小时,HOUR 函数可快速计算出它们之间的小时差。

单击 HOUR,即可了解更多关于此函数的详细信息。

要获取单元格 A14 和 B14 中时间的小时差,请使用以下 HOUR 函数:

=HOUR(B 14-A14)

按下 Enter 键,立即获取结果!
计算不超过24小时的两个时间之间的小时差值

开始时间必须早于结束时间,否则公式将返回 #NUM! 错误。

1.24 仅计算两个时间之间的分钟差值(不超过 60 分钟)

MINUTE 函数可快速提取这两个时间之间的分钟差(忽略小时和秒)。

单击 MINUTE,即可了解更多关于此函数的详细信息。

要仅获取单元格 A17 和 B17 中时间的分钟差,请使用以下 MINUTE 函数:

=MINUTE(B 17-A17)

按下 Enter 键,立即获取结果!
计算不超过60分钟的两个时间之间的分钟差值

开始时间必须早于结束时间,否则公式将返回 #NUM! 错误值。

1.25 仅计算两个时间之间的秒差值(不超过 60 秒)

SECOND 函数可快速获取这两个时间之间的秒数差(忽略小时和分钟)。

单击 SECOND,了解更多关于此函数的详细信息。

要仅获取单元格 A20 和 B20 中时间的秒差,请使用以下 SECOND 函数:

=SECOND(B 20-A20)

按下 Enter 键,立即获取结果。
计算不超过60秒的两个时间之间的秒差值

开始时间必须早于结束时间,否则公式将返回 #NUM! 错误。

1.26 计算两个时间之间的差值并返回小时、分钟、秒

如果您希望将两个时间之间的差值显示为“xx 小时 xx 分钟 xx 秒”,请使用以下 TEXT 函数:

TEXT(end_time-start_time,“h““ 小时 ““m““ 分钟 ““s““ 秒““)

单击 TEXT,即可了解此函数的参数和用法。

要计算单元格 A23 和 B23 中时间的差值,请使用以下公式:

=TEXT(B 23-A23,"h"" hours ""m"" minutes ""s"" seconds""").

按下 Enter 键,立即获取结果!
计算两个时间之间的差值,并返回小时、分钟和秒

注意:

该公式同样仅计算不超过 24 小时的时差,且要求结束时间必须晚于开始时间,否则将返回 #VALUE! 错误。

1.27 计算两个日期时间之间的差值

若两个时间均采用 mm/dd/yyyy hh:mm:ss 格式,您可根据需要选用以下任一公式计算它们之间的差值。

获取两个日期时间之间的差值,并以 hh:mm:ss 格式返回结果

以单元格 A2 和 B2 中的两个日期时间为例,请使用以下公式:

=B 2-A2

Enter 键后,结果将以日期时间格式返回;随后在数字选项卡的设置单元格格式对话框中,将此结果的格式设为 [h]:mm:ss(自定义类别)。
以 hh:mm:ss 格式返回结果 以 hh:mm:ss 格式返回结果

获取两个日期时间之间的差值,并返回天、小时、分钟、秒

以单元格 A5 和 B5 中的两个日期时间为例,请使用以下公式:

=INT(B 5-A5) & " Days, " & HOUR(B 5-A5) & " Hours, " & MINUTE(B5-A5) & " Minutes, " & SECOND(B 5-A5) & " Seconds "

按下 Enter 键即可获取结果。
获取两个日期时间之间的差值,并返回天、小时、分钟和秒

注意:在这两个公式中,结束日期时间必须晚于开始日期时间,否则公式将返回错误值。

1.28 计算包含毫秒的时间差值

首先,您需要了解如何设置单元格格式以显示毫秒:

选择要显示毫秒的单元格,右键单击并选择设置单元格格式,即可打开设置单元格格式对话框。在“数字”选项卡下的类别列表中选择自定义,然后在文本框中输入 hh:mm:ss.000.
在对话框中输入此格式 hh:mm:ss.000

使用公式:

ABS(end_time-start_time)

此处要计算单元格 A8 和 B8 中两个时间的差值,请使用以下公式:

=ABS(B 8-A8)

按下 Enter 键即可获取结果。
输入公式以计算包含毫秒的时间差值

1.29 计算两个日期之间的工作工作时间(不含周末)

有时,您可能需要计算两个日期之间的工作时间(不含周末,即周六和周日)。

NETWORKDAYS(start_date,end_date) * working_hours

此处每天的工作工作时间固定为 8 小时,要计算单元格 A16 和 B16 中两个日期之间的工作工作时间,请使用以下公式:

=NETWORKDAYS(A16,B16) * 8

按下 Enter 键后,将结果格式设置为常规或数值。
计算两个日期之间排除周末的工作小时数

有关计算两个日期之间工作工作时间的更多示例,请访问 在 Excel 中获取两个日期之间的工作小时数


1.3 使用 Kutools for Excel 计算两个日期时间之间的差值

如果您已在 Excel 中安装了 Kutools for Excel,90% 的日期时间差值计算即可快速完成,无需记忆任何公式。

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

1.31 使用“日期与时间助手”计算两个日期时间之间的差值

在 Excel 中计算两个日期时间之间的差值,只需使用日期时间助手即可轻松搞定!

1. 选择一个用于放置计算结果的单元格,然后单击 Kutools > 公式助手 > 日期时间助手
点击 Kutools 的日期和时间助手功能

2. 在弹出的日期时间助手对话框中,请按以下设置操作:

  1. 勾选差值选项;
  2. 参数输入部分中选择起始日期时间和结束日期时间,您也可以直接在输入框中手动输入日期时间,或单击日历图标选择日期;
  3. 从下拉列表中选择输出结果类型;
  4. 结果部分预览效果。

在对话框中指定选项

3. 单击确定后,计算结果将输出,然后自动将填充柄拖动到您需要计算的单元格上。

提示:

如果您希望获取两个日期时间之间的差值,并以天、小时和分钟的形式显示结果(使用 Kutools for Excel),请按以下步骤操作:

选择一个用于放置结果的单元格,然后单击 Kutools > 公式助手 > 日期和时间 > 计算两个日期之间的天数、小时数和分钟数
点击“计算两个日期之间的天、小时和分钟”功能

然后在公式助手对话框中指定开始日期和结束日期,再单击确定
在对话框中指定单元格引用

差值结果将以天、小时和分钟的形式呈现。
差值结果以天、小时和分钟显示

单击日期时间助手,了解更多用法!

单击 Kutools for Excel,立即了解此加载项的全部功能!

单击免费下载,即可免费试用 Kutools for Excel 30 天!

1.32 使用公式助手计算两个日期时间之间的周末/工作日/特定星期几的差值

如果您想快速统计两个日期时间之间的周末、工作日或特定星期几的数量,Kutools for Excel公式助手功能组可以帮您轻松实现。

1. 选择用于放置计算结果的单元格,单击 Kutools > 统计 > 两个日期间非工作日天数 / 两个日期间工作日天数 / 两日期间星期几的天数
选择相应功能

2. 在弹出的公式助手对话框中,指定开始日期和结束日期;若使用了两日期间星期几的天数功能,还需指定具体的星期几。

要统计特定星期几,可参考备注,使用 1-7 表示星期日至星期六。
在对话框1中设置单元格引用
在对话框2中设置单元格引用

3. 单击确定后,根据需要将自动填充柄拖动到需统计周末、工作日或特定星期几数量的单元格上。

单击 Kutools for Excel 以全面了解此加载项的所有功能。

单击免费下载立即免费试用 Kutools for Excel,畅享 30 天完整功能!


2. 轻松添加或减去日期和时间

除了计算两个日期时间之间的差值外,在 Excel 中对日期时间进行加减运算也十分常见。例如,您可以根据产品的生产日期和保质天数,轻松算出其截止日期。

2.1 为日期增加或减去天数/月数/年数/周数/工作日

2.11 向日期添加或减去天数

要向日期添加或减去指定天数,以下是两种实用方法。

假设要向单元格 A2 中的日期添加 21 天,请选择以下任一方法解决:

方法 1:日期+天数

选择一个单元格并输入公式:

=A+21

按下 Enter 键即可获取结果。
通过 date+days 添加天数

如果要减去 21 天,只需将加号(+)改为减号(——)。

方法 2:选择性粘贴

1. 在某个单元格(例如 C2)中输入要添加的天数,然后按 Ctrl+C 复制。
复制要添加的天数

2. 然后选择要添加 21 天的日期,右键单击以显示上下文菜单,并选择选择性粘贴……
右键单击所选区域,然后选择“选择性粘贴”

3. 在选择性粘贴对话框中,勾选选项(如需减去天数,请勾选)选项),然后单击确定
在对话框中勾选“加”选项

4. 现在原始日期已变为五位数,请将其格式化为日期。
设置单元格格式以获得结果

2.12 向日期添加或减去月数

要向日期添加或减去月数,可使用 EDATE 函数。

EDATE(date, months)

单击 EDATE,即可了解其参数和用法。

假设要向单元格 A2 中的日期添加 6 个月,请使用如下公式:

=EDATE(A2,6)

按下 Enter 键即可获取结果。
为日期添加或减去月份

若要从日期中减去 6 个月,请将 6 改为 -6.

2.13 向日期添加或减去年份

要向日期添加或减去 n 年,请使用结合 DATE、YEAR、MONTH 和 DAY 函数的公式。

DATE(YEAR(date) + years, MONTH(date),DAY(date))

假设要向单元格 A2 中的日期添加 3 年,请使用如下公式:

=DATE(YEAR(A2) + 3, MONTH(A2),DAY(A2))

按下 Enter 键即可获取结果。
为日期添加或减去年份

若要从日期中减去 3 年,请将 3 改为 -3.

2.14 向日期添加或减去周数

向日期添加或减去周数的通用公式为

date+weeks*7

假设要向单元格 A2 中的日期添加 4 周,请使用如下公式:

=A 2+4*7

按下 Enter 键即可获取结果。
为日期添加或减去周数

如果要从日期中减去 4 周,请将加号(+)改为减号(——)。

2.15 添加或减去包含或排除节假日的工作日

本节介绍如何使用 WORKDAY 函数向给定日期添加或减去工作日(包含或排除节假日)。

WORKDAY(date,days,[holidays])

访问 WORKDAY,了解更多关于其参数与用法的详细信息。

添加包含节假日的工作日

单元格 A2 中是您使用的日期,单元格 B2 包含要添加的天数,请使用如下公式:

=WORKDAY(A2,B2)

按下 Enter 键即可获取结果。
添加包含节假日的工作日

添加排除节假日的工作日

单元格 A5 中是您使用的日期,单元格 B5 包含要添加的天数,范围 D5:D8 列出了节假日,请使用如下公式:

=WORKDAY(A5,B5,D5:D8)

按下 Enter 键,立即获取结果!
添加排除节假日的工作日

注意:

WORKDAY 函数默认将周六和周日视为周末;如果您的周末是周六和周日,可以使用支持自定义周末的 WORKDAY.INTL 函数。
应用 WORKDAY.INTL 函数排除特定日期
通过 WORKDAY.INTL 函数获取结果

访问 WORKDAY.INTL 获取更多详情。

若要从日期中减去工作日,只需在公式中将天数设为负数即可。

2.16 向日期添加或减去特定年、月、日

若要向日期添加指定的年、月或日,可使用结合 DATE、YEAR、MONTH 和 DAY 函数的公式轻松实现。

DATE(YEAR(date) + years, MONTH(date) + months, DAY(date) + days)

要向 A11 单元格中的日期添加 1 年 2 个月和 30 天,请使用如下公式:

=DATE(YEAR(A11)+1,MONTH(A11)+2,DAY(A11)+30)

按下 Enter 键,立即获取结果!
为日期添加或减去指定的年、月、日

如果要减去,请将所有加号(+)替换为减号(——)。


2.2 为时间增加或减去小时/分钟/秒

2.21 向日期时间添加或减去小时/分钟/秒

以下是用于向日期时间添加或减去小时、分钟或秒的一些公式。
为日期时间添加或减去小时/分钟/秒

向日期时间添加或减去小时

Datetime+hours/24

假设要向单元格 A2 中的日期时间(也可以仅为时间)添加 3 小时,请使用如下公式:

=A 2+3/24

按下 Enter 键即可获取结果。
为日期时间添加或减去小时

向日期时间添加或减去分钟

Datetime+minutes/1440

假设要向单元格 A5 中的日期时间(也可以仅为时间)添加 15 分钟,请使用如下公式:

=A 2+15/1440

按下 Enter 键,立即获取结果!
为日期时间添加或减去分钟

向日期时间添加或减去秒

Datetime+seconds/86400

假设要向单元格 A8 中的日期时间(也可以仅为时间)添加 20 秒,请使用如下公式:

=A 2+20/86400

按下 Enter 键,立即获取结果。
为日期时间添加或减去秒

2.22 对超过 24 小时的时间求和

假设 Excel 中有一个表格记录了所有员工一周的工作时间,要计算薪酬所需的总工作时间,您可以使用 SUM(范围)来获取结果。但通常情况下,求和结果会显示为不超过 24 小时的时间(如下方截图所示)——如何才能获得正确结果?
对超过24小时的时间求和

实际上,您只需将结果格式化为 [hh]:mm:ss 即可。

右键单击结果单元格,选择上下文菜单中的设置单元格格式选项,在弹出的设置单元格格式对话框中,从列表中选择自定义,然后在右侧文本框中输入 [hh]:mm:ss,再单击确定
在对话框中指定时间格式  在对话框中指定时间格式

求和结果将准确呈现。
获得正确结果

2.23 向日期添加工作时间,并排除周末和节假日

此处提供了一个长公式,用于在向开始日期添加指定工作小时数时计算结束日期,并自动排除周末(周六和周日)及节假日。

在 Excel 表格中,A11 单元格包含开始日期/时间,B11 单元格包含工作时间,E11 和 E13 单元格分别为工作开始和结束时间,E15 单元格包含需排除的节假日。
为日期添加工作小时数(排除周末和节假日)

请使用如下公式:

=WORKDAY(A11,INT(B11/8)+IF(TIME(HOUR(A11),MINUTE(A11),SECOND(A11))+TIME(MOD(B11,8),MOD(MOD(B11,8),1)*60,0)> $E$13,1,0),$E$15)+IF(TIME(HOUR(A11),MINUTE(A11),SECOND(A11))+TIME(MOD(B11,8),MOD(MOD(B11,8),1)*60,0)>$E$13,$E$11 +TIME(HOUR(A11),MINUTE(A11),SECOND(A11))+TIME(MOD(B11,8),MOD(MOD(B11,8),1)*60,0)-$E$13,TIME(HOUR(A11),MINUTE(A11),SECOND(A11)) +TIME(MOD(B11,8),MOD(MOD(B11,8),1)*60,0))

按下 Enter 键即可获取结果。
应用长公式以获得结果


2.3 使用 Kutools for Excel 增加或减去日期/时间

如果您已安装 Kutools for Excel,只需使用其日期与时间助手工具,即可轻松解决大部分日期时间加减计算问题!

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

1. 单击要输出结果的单元格,然后依次点击 Kutools > 公式助手 > 日期时间助手 来应用此工具。
点击 Kutools 的日期和时间助手功能

2. 在日期时间助手对话框中,先根据需要勾选选项,然后在参数输入部分选择单元格或直接输入起始日期时间,接着指定要加减的年、月、周、日、小时、分钟和秒数,最后单击确定。参见截图:

您可在结果部分预览计算结果。
在对话框中设置选项

结果现已生成,只需拖动自动填充柄至其他单元格,即可快速获取相应结果。
拖动自动填充柄至其他单元格以获取结果

单击日期时间助手以了解此功能的更多用法。

单击 Kutools for Excel 以全面了解此加载项的所有功能。

单击免费下载,即可立即获取 Kutools for Excel 的 30 天免费试用版!


2.4 扩展

2.41 检查或高亮显示已过期的日期

如果有一份产品到期日期列表,您可能希望根据今天日期检查并高亮显示已过期的日期(如下方截图所示)。
检查或高亮显示已过期的日期

实际上,使用条件格式即可快速完成此任务。

1. 选择要检查的日期,然后单击开始 > 使用条件格式 > 新建规则
点击“开始”>“条件格式”>“新建规则”

2. 在新建格式规则对话框中,于选择规则类型部分选择使用公式确定要设置格式的单元格,然后在输入框中键入 =B2<TODAY()(B2 是您要检查的第一个日期),再单击格式按钮,即可弹出设置单元格格式对话框。随后,根据需要选择一种醒目格式以突出显示到期日期,最后连续单击确定> 确定
在“填充”选项卡下选择一种颜色  在“填充”选项卡下选择一种颜色

2.42 返回当前月份的最后一天/下个月的第一天

某些产品的到期日期位于生产月份的最后一天或下个月的第一天,若要根据生产日期快速列出到期日期,请参考本节内容。

获取当前月份的最后一天

EOMONTH(date,0)

B13 单元格中有一个生产日期,请使用如下公式:

=EOMONTH(B13,0)

按下 Enter 键即可获取结果。
获取当前月份的最后一天

获取下个月的第一天

EOMONTH(date,0)+1

B18 单元格中有一个生产日期,请使用如下公式:

=EOMONTH(B18,0)+1

按下 Enter 键即可获取结果。
获取下个月的第一天


3. 计算年龄

本节列出了基于给定日期或序列号计算年龄的方法。


3.1 根据日期计算年龄

3.11 根据给定出生日期计算年龄

根据给定的出生日期计算年龄

根据出生日期获取小数形式的年龄

YEARFRAC(birthdate, TODAY())

单击 YEARFRAC,即可了解其参数和用法详情。

例如,要根据 B2:B9 列中的出生日期列表获取年龄,请使用如下公式:

=YEARFRAC(B2,TODAY())

按下 Enter 键,然后向下拖动自动填充柄,即可计算出所有年龄。
根据出生日期获取带小数的年龄

提示:

1)您可在设置单元格格式对话框中按需指定小数位数。
在“设置单元格格式”对话框中指定小数位数

2)如果要根据给定出生日期计算特定日期的年龄,请将 TODAY() 替换为带双引号的特定日期,例如 =YEARFRAC(B2,“1/1/2021")。

3)如果要根据出生日期获取明年的年龄,只需在公式中添加 1,例如 =YEARFRAC(B2,TODAY())+1.

根据出生日期获取整数形式的年龄

DATEDIF(birthdate,TODAY(),"y")

单击 DATEDIF,即可了解其参数和用法详情。

沿用上述示例,要根据 B2:B9 列中的出生日期列表获取年龄,请使用如下公式:

=DATEDIF(B2,TODAY(),"y")

按下 Enter 键,然后向下拖动自动填充柄,即可计算出所有年龄。
根据出生日期获取整数年龄

提示:

1)若需根据出生日期计算截至某一特定日期的年龄,请将 TODAY() 替换为带双引号的该日期,例如:=DATEDIF(B2,“1/1/2021“,“y“)。

2)如果要根据出生日期获取明年的年龄,只需在公式中添加 1,例如 =DATEDIF(B2,TODAY(),"y")+1.

3.12 根据给定生日以“年、月、日”格式计算年龄

如果要根据给定出生日期计算年龄,并将结果显示为“xx 年 xx 月 xx 天”(如下方截图所示),以下长公式可助您一臂之力。
根据生日计算年龄(以年、月、日格式显示)

=DATEDIF(birthdate,TODAY(),“Y“)&“ 年, “&DATEDIF(birthdate,TODAY(),“YM“)&“ 个月, “&DATEDIF(birthdate,TODAY(),“MD“)&“ 天“

要根据 B12 单元格中的出生日期获取以年、月、日表示的年龄,请使用如下公式:

=DATEDIF(B12,TODAY(),"Y")&" Years, "&DATEDIF(B12,TODAY(),"YM")&" Months, "&DATEDIF(B12,TODAY(),"MD")&" Days"

按下 Enter 键即可获取年龄,然后向下拖动自动填充柄至其他单元格。
向下拖动自动填充柄至其他单元格

提示:

如果要根据给定出生日期计算特定日期的年龄,请将 TODAY() 替换为带双引号的特定日期,例如 =DATEDIF(B12,“1/1/2021“,“Y“)&“ 年, “&DATEDIF(B12,“1/1/2021“,“YM“)&“ 月, “&DATEDIF(B12,“1/1/2021“,“MD“)&“ 天“。

3.13 计算 1/1/1900 之前的出生日期对应的年龄

在 Excel 中,1/1/1900 之前的日期无法作为日期时间输入或正确计算。但如果您想根据给定的出生日期(早于 1/11900)和去世日期计算某位名人的年龄,则只能借助 VBA 代码实现。
计算1900年1月1日之前的出生日期对应的年龄

1. 按 Alt+F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入选项卡,选择模块即可创建新模块。

2. 随后,将下方代码复制并粘贴到新建的模块中。

VBA:在 1/1/1900 前计算年龄

Public Function AgeFunc(SDate As Variant, EDate As Variant) As Long
'UpdatebyExtendOffice
    Dim xSMonth As Integer
    Dim xSDay As Integer
    Dim xSYear As Integer
    Dim xEMonth As Integer
    Dim xEDay As Integer
    Dim xEYear As Integer
    Dim xAge As Integer
    If Not GetDate(SDate, xSYear, xSMonth, xSDay) Then
        AgeFunc = "Invalid Date"
        Exit Function
    End If
    If Not GetDate(EDate, xEYear, xEMonth, xEDay) Then
        AgeFunc = "Invalid Date"
        Exit Function
    End If
    xAge = xEYear - xSYear
    If xSMonth > xEMonth Then
        xAge = xAge - 1
    ElseIf xSMonth = xEMonth Then
        If xSDay > xEDay Then xAge = xAge - 1
    End If
    If xAge < 0 Then
        AgeFunc = "Invalid Date"
    Else
        AgeFunc = xAge
    End If
End Function
Private Function GetDate(ByVal DateStr As String, Y As Integer, M As Integer, D As Integer) As Boolean
    Dim I As Long
    Dim K As Long
    Y = 0
    M = 0
    D = 0
    GetDate = True
    On Error Resume Next
    I = InStr(1, DateStr, "/")
    M = CLng(Left(DateStr, I - 1))
    D = CLng(Mid(DateStr, I + 1, InStr(I + 1, DateStr, "/") - I - 1))
    Y = CLng(Right(DateStr, Len(DateStr) - InStrRev(DateStr, "/")))
    If M < 1 Or M > 12 Or D < 1 Or D > 31 Or Y < 1 Then
        GetDate = False
    End If
End Function

将代码复制并粘贴到模块中

3. 保存代码后,返回工作表,选择一个单元格用于显示计算出的年龄,输入 =AgeFunc(birthdate,deathdate),本例中为 =AgeFunc(B22,C22),按 ENTER 键即可获取年龄。如有需要,还可使用自动填充柄将此公式快速应用到其他单元格。
输入公式以获取结果

3.2 使用 Kutools for Excel 根据出生日期计算年龄

如果您已在 Excel 中安装了 Kutools for Excel,即可使用其日期时间助手工具轻松计算年龄!

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

1. 选择一个用于显示计算出年龄的单元格,然后单击 Kutools > 公式助手 > 日期时间助手
点击 Kutools 的日期和时间助手功能

2. 在日期时间助手对话框中,

  • 1) 勾选年龄选项;
  • 2) 选择出生日期单元格,或直接输入出生日期,或单击日历图标选择出生日期;
  • 3) 如果要计算当前年龄,请选择今天选项;如果要计算过去或未来的年龄,请选择到某天选项并输入日期;
  • 4) 从下拉列表中指定输出类型;
  • 5) 预览输出结果,单击确定

在对话框中指定选项

单击日期时间助手以了解此功能的更多用法。

单击 Kutools for Excel 以全面了解此加载项的所有功能。

单击免费下载,即可立即获得 Kutools for Excel 的 30 天免费试用!


3.3 根据序列号计算年龄或获取出生日期

根据序列号计算年龄或获取出生日期

3.31 从身份证号码获取生日

如果有一列身份证号码,其前 6 位表示出生日期(例如 920315330 对应 1992 年 3 月 15 日),如何快速将出生日期提取到另一列?

现在以从 C2 单元格开始的身份证号码列表为例,使用如下公式:

=MID(C2,5,2)&"/"&MID(C2,3,2)&"/"&MID(C2,1,2)

按下 Enter 键,然后向下拖动自动填充柄即可获取其他结果。
从身份证号码中提取出生日期

注意:

在该公式中,您可以根据需要更改引用。例如,若身份证号码显示为 13219920420392,其生日为 04/20/1992,则可将公式修改为 =MID(C2,8,2)&“/“&MID(C2,10,2)&“/“&MID(C2,4,4) 以获得正确结果。

3.32 从身份证号码计算年龄

如果有一列身份证号码,其前 6 位代表出生日期(例如 920315330 表示出生日期为 1992 年 3 月 15 日),如何在 Excel 中根据每个身份证号码快速计算年龄?

现在以从 C2 单元格开始的身份证号码列表为例,使用如下公式:

=DATEDIF(DATE(IF(LEFT(C2,2)>TEXT(TODAY(),"YY"),"19"&LEFT(C2,2),"20"&LEFT(C2,2)),MID(C2,3,2),MID(C2,5,2)),TODAY(),"y")

按下 Enter 键,然后向下拖动自动填充柄即可获取其他结果。
从身份证号码中计算年龄

注意:

在此公式中,若年份小于当前年份,则视为以 20 开头,例如 200203943 将被视为年份 2020;若年份大于当前年份,则视为以 19 开头,例如 920420392 将被视为年份 1992.


更多 Excel 教程:

将多个工作簿/工作表合并为一个
本教程涵盖您可能遇到的几乎所有合并场景,并提供相应的专业解决方案,助您轻松高效完成任务!

拆分文本、数字和日期单元格(拆分为多列)
本教程分为三部分:拆分文本单元格、拆分数字单元格和拆分日期单元格,每部分均提供实用示例,助您轻松掌握对应场景下的拆分操作方法。

在 Excel 中合并多个单元格内容而不丢失数据
本教程聚焦于从单元格的特定位置提取内容,汇总多种方法,助您在 Excel 中轻松按指定位置提取文本或数字。

在 Excel 中比较两列以查找匹配项和差异
本文涵盖您可能遇到的绝大多数两列比较场景,助您轻松应对,不容错过!


  • 超级编辑栏(轻松编辑多行文本和公式);阅读版式(轻松阅读和编辑大量单元格);粘贴到筛选范围……
  • 合并单元格/行/列并保留数据;分割单元格内容;合并重复行并求和/求平均值……防止重复项单元格;比较区域……
  • 选择重复或唯一行;选择空白行(所有单元格均为空);超级查找和模糊查找多个工作簿中的内容;随机选择……
  • 精准公式复制多个单元格而不更改公式引用;自动创建引用到多个工作表;插入项目符号、复选框等更多功能……
  • 收藏并快速插入公式、区域、图表和图片;加密单元格并设置密码;创建邮件列表并发送电子邮件……
  • 提取文本、添加文本、删除某位置字符、删除空格;创建并打印数据分页统计;在单元格内容与批注之间转换……
  • 超级筛选(保存并应用筛选方案到其他工作表);高级排序按月/周/日、频率等分组;特殊筛选按加粗、倾斜等格式……
  • 合并工作簿和工作表;汇总表格基于关键列;分割数据到多个工作表批量转换 xls、xlsx 和 PDF……
  • 数据透视表按周数、星期几等分组……显示未锁定、选区锁定并以不同颜色标识;高亮显示包含公式/名称的单元格……
kte tab 201905
  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑与阅读,大幅提升多文档操作效率!
  • 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中操作。
  • 将您的工作效率提升 50%,每天减少数百次鼠标点击!
officetab bottom