Excel 使用的日期是一个从 1900 年 1 月 1 日开始的序列号,例如:
2025-04-02
的序列号为 44903
。=A1 + 7
会得到 7 天后的日期。以下是主要函数的详细介绍:
TODAY()
用途:返回当前日期,不包含时间部分。
=TODAY()
示例:
A | B | 结果 |
---|---|---|
今日日期 | =TODAY() |
2025-04-02 |
比今天晚10天的日期 | =TODAY()+10 |
2025-04-12 |
DATE()
用途:返回由年、月、日三个参数构成的日期。
=DATE(year, month, day)
示例:
A | B | C | D | E |
---|---|---|---|---|
年 | 月 | 日 | 日期 | 结果 |
2025 | 4 | 2 | =DATE(A2,B2,C2) |
2025-04-02 |
EOMONTH()
用途:返回指定日期 前/后指定月数的月份的最后一天。
=EOMONTH(start_date, months)
start_date
:起始日期(选中的日期)。months
:正数表示未来的月份,负数表示过去的月份
示例:
A | B | 结果 |
---|---|---|
起始日期 | 2025-04-02 | |
上月月末 | =EOMONTH(A2, -1) |
2025-03-31 |
本月月末 | =EOMONTH(A2, 0) |
2025-04-30 |
下月月末 | =EOMONTH(A2, 1) |
2025-05-31 |
YEAR()
用途:从给定日期中提取年份。
=YEAR(date)
示例:
A | B |
---|---|
日期 | 2025-04-02 |
年份 | =YEAR(A2) |
结果 | 2025 |
MONTH()
用途:从给定日期中提取月份(1-12)。
=MONTH(date)
示例:
A | B |
---|---|
日期 | 2025-04-02 |
月份 | =MONTH(A2) |
结果 | 4 |
DAY()
用途:从给定日期中提取日期中的“日”。
=DAY(date)
示例:
A | B |
---|---|
日期 | 2025-04-02 |
日 | =DAY(A2) |
结果 | 2 |
WEEKDAY()
用途:返回一个日期对应的 星期几,默认为 1=周日
到 7=周六
。
=WEEKDAY(date, [return_type])
date
:目标日期。return_type
:决定返回值的模式。
1
:周日=1,周一=2,…,周六=7(默认)。2
:周一=1,周二=2,…,周日=7。3
:周一=0,周二=1,…,周日=6。示例:
A | B |
---|---|
日期 | 2025-04-02 |
星期几 | =WEEKDAY(A2, 2) |
结果 | 3 (代表星期三) |
WEEKNUM()
用途:返回一个日期在一年中的第几周。
=WEEKNUM(date, [return_type])
date
:目标日期。return_type
:决定每周的起始日。
1
:周日为每周的第一天(默认)。2
:周一为每周的第一天。示例:
A | B |
---|---|
日期 | 2025-04-02 |
周数 | =WEEKNUM(A2, 2) |
结果 | 14 |
DATEDIF()
DATEDIF
用于计算两个日期之间的差值,并返回不同单位(年、月、日)下的差值。虽然它是一个 “隐藏函数”(不会在函数列表中显示),但在日期差值计算中非常强大。
函数语法
=DATEDIF(start_date, end_date, unit)
start_date
:起始日期(较早的日期)。end_date
:结束日期(较晚的日期)。unit
:返回结果的单位,用引号括起来。支持以下几种单位:单位 | 含义 | 说明 |
---|---|---|
"Y" |
年数 | 返回两个日期之间的 完整年份数。 |
"M" |
月数 | 返回两个日期之间的 完整月份数。 |
"D" |
天数 | 返回两个日期之间的 天数总计。 |
"MD" |
忽略年与月,仅计算 天数差 | 如 2024-01-10 和 2025-03-20 返回 10 。 |
"YM" |
忽略年,仅计算 月份差 | 如 2024-01-10 和 2025-03-20 返回 2 。 |
"YD" |
忽略年,仅计算 天数差 | 如 2024-01-10 和 2025-03-20 返回 69 。 |
注意:
start_date
必须小于等于end_date
,否则会返回错误值!
示例用法
假设在 Excel 表中:
A | B | C |
---|---|---|
起始日期 | 2020-01-01 | |
结束日期 | 2025-04-02 |
公式与结果如下:
单位 | 公式 | 结果 |
---|---|---|
年数 | =DATEDIF(A2, B2, "Y") |
5 |
月数 | =DATEDIF(A2, B2, "M") |
63 |
天数 | =DATEDIF(A2, B2, "D") |
1918 |
忽略年,仅计算月数 | =DATEDIF(A2, B2, "YM") |
3 |
忽略年与月,仅计算天数 | =DATEDIF(A2, B2, "MD") |
1 |
忽略年,仅计算天数 | =DATEDIF(A2, B2, "YD") |
91 |
应用案例
工龄计算
如果要计算员工的工龄(单位为年),可以使用:
=DATEDIF(入职日期, TODAY(), "Y")
举例:如果 入职日期 = 2018-03-01
,今天是 2025-04-02
,则工龄为 7
年。
年龄计算
假设在 A1
单元格中存储生日:
=DATEDIF(A1, TODAY(), "Y")
输出为:年龄(单位:年)。
项目周期计算
如果想计算项目持续了几个月,可以使用:
=DATEDIF(项目开始日期, 项目结束日期, "M")
如果要算出项目的总天数:
=DATEDIF(项目开始日期, 项目结束日期, "D")
错误与注意事项
start_date > end_date
,Excel 会返回 #NUM!
错误。DATEDIF()
是一个“隐藏函数”,在 Excel 的函数提示中找不到它。获取当前时间:
=NOW()
返回包含日期和时间的完整时间戳(例如:2025-04-02 14:35:12)。
自动生成每月最后一天列表:
=EOMONTH(start_date, 0)
可以用于生成财务报表中的月度截止日期。
这些函数在数据分析中非常有用,例如生成时间序列、计算年度/季度/月度数据的汇总与对比、动态生成报表等。
Excel 中的时间函数可分为以下几类:
TODAY()
, NOW()
YEAR()
, MONTH()
, DAY()
, WEEKDAY()
DATE()
, DATEDIF()
, EOMONTH()
, WEEKNUM()
HOUR()
, MINUTE()
, SECOND()
, TIME()
, TIMEVALUE()