目录
-
-
- [1. `TODAY()`](#1.
TODAY()) - [2. `DATE()`](#2.
DATE()) - [3. `EOMONTH()`](#3.
EOMONTH()) - [4. `YEAR()`](#4.
YEAR()) - [5. `MONTH()`](#5.
MONTH()) - [6. `DAY()`](#6.
DAY()) - [7. `WEEKDAY()`](#7.
WEEKDAY()) - [8. `WEEKNUM()`](#8.
WEEKNUM()) - [9. `DATEDIF()`](#9.
DATEDIF()) - [10.📌 函数扩展与应用](#10.📌 函数扩展与应用)
- [11. 📚 时间函数基础概念与分类](#11. 📚 时间函数基础概念与分类)
- [1. `TODAY()`](#1.
-
Excel 提供了许多 日期与时间类型的函数 ,用于操作与处理日期或时间数据。这些函数对于数据分析、报表生成、项目管理等场景非常重要。
Excel 使用的日期是一个从 1900 年 1 月 1 日开始的序列号,例如:
2025-04-02的序列号为44903。- Excel 可以进行日期加减计算,例如:
=A1 + 7会得到 7 天后的日期。
以下是主要函数的详细介绍:
1. TODAY()
用途:返回当前日期,不包含时间部分。
- 格式:
=TODAY() - 返回结果:系统当前日期(例如:2025-04-02)。
- 应用场景:自动生成报告日期、计算工作天数等。
示例:
| A | B | 结果 |
|---|---|---|
| 今日日期 | =TODAY() |
2025-04-02 |
| 比今天晚10天的日期 | =TODAY()+10 |
2025-04-12 |
2. DATE()
用途:返回由年、月、日三个参数构成的日期。
- 格式:
=DATE(year, month, day) - 返回结果:一个合法的日期。
- 应用场景:将年、月、日组合成标准日期格式,或用于动态生成日期。
示例:
| A | B | C | D | E |
|---|---|---|---|---|
| 年 | 月 | 日 | 日期 | 结果 |
| 2025 | 4 | 2 | =DATE(A2,B2,C2) |
2025-04-02 |
3. EOMONTH()
用途:返回指定日期 前/后指定月数的月份的最后一天。
- 格式:
=EOMONTH(start_date, months) - 参数说明:
start_date:起始日期(选中的日期)。months:正数表示未来的月份,负数表示过去的月份- -1:上个月
- 0:当月
- 1:下月
- 应用场景:计算月末日期、生成财务月报等。
示例:
| A | B | 结果 |
|---|---|---|
| 起始日期 | 2025-04-02 | |
| 上月月末 | =EOMONTH(A2, -1) |
2025-03-31 |
| 本月月末 | =EOMONTH(A2, 0) |
2025-04-30 |
| 下月月末 | =EOMONTH(A2, 1) |
2025-05-31 |
4. YEAR()
用途:从给定日期中提取年份。
- 格式:
=YEAR(date) - 返回结果:整数年份。
- 应用场景:数据分类、年度汇总等。
示例:
| A | B |
|---|---|
| 日期 | 2025-04-02 |
| 年份 | =YEAR(A2) |
| 结果 | 2025 |
5. MONTH()
用途:从给定日期中提取月份(1-12)。
- 格式:
=MONTH(date) - 返回结果:月份数字。
- 应用场景:月度分析、季度统计等。
示例:
| A | B |
|---|---|
| 日期 | 2025-04-02 |
| 月份 | =MONTH(A2) |
| 结果 | 4 |
6. DAY()
用途:从给定日期中提取日期中的"日"。
- 格式:
=DAY(date) - 返回结果:日期中的日子(1-31)。
- 应用场景:按天分析、数据对比等。
示例:
| A | B |
|---|---|
| 日期 | 2025-04-02 |
| 日 | =DAY(A2) |
| 结果 | 2 |
7. 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 (代表星期三) |
8. WEEKNUM()
用途:返回一个日期在一年中的第几周。
- 格式:
=WEEKNUM(date, [return_type]) - 参数说明:
date:目标日期。return_type:决定每周的起始日。1:周日为每周的第一天(默认)。2:周一为每周的第一天。
- 应用场景:季度统计、年报分析等。
示例:
| A | B |
|---|---|
| 日期 | 2025-04-02 |
| 周数 | =WEEKNUM(A2, 2) |
| 结果 | 14 |
9. DATEDIF()
DATEDIF 用于计算两个日期之间的差值,并返回不同单位(年、月、日)下的差值。虽然它是一个 "隐藏函数"(不会在函数列表中显示),但在日期差值计算中非常强大。
函数语法
excel
=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 |
应用案例
🎯 工龄计算
如果要计算员工的工龄(单位为年),可以使用:
excel
=DATEDIF(入职日期, TODAY(), "Y")
举例:如果 入职日期 = 2018-03-01,今天是 2025-04-02,则工龄为 7 年。
🎯 年龄计算
假设在 A1 单元格中存储生日:
excel
=DATEDIF(A1, TODAY(), "Y")
输出为:年龄(单位:年)。
🎯 项目周期计算
如果想计算项目持续了几个月,可以使用:
excel
=DATEDIF(项目开始日期, 项目结束日期, "M")
如果要算出项目的总天数:
excel
=DATEDIF(项目开始日期, 项目结束日期, "D")
错误与注意事项
- 如果
start_date > end_date,Excel 会返回#NUM!错误。 DATEDIF()是一个"隐藏函数",在 Excel 的函数提示中找不到它。- 如果使用时出现错误,检查日期格式或是否引用了无效的单元格。
10.📌 函数扩展与应用
-
获取当前时间:
excel=NOW()返回包含日期和时间的完整时间戳(例如:2025-04-02 14:35:12)。
-
自动生成每月最后一天列表:
excel=EOMONTH(start_date, 0)可以用于生成财务报表中的月度截止日期。
这些函数在数据分析中非常有用,例如生成时间序列、计算年度/季度/月度数据的汇总与对比、动态生成报表等。
11. 📚 时间函数基础概念与分类
Excel 中的时间函数可分为以下几类:
- 日期获取函数 :
TODAY(),NOW() - 日期提取函数 :
YEAR(),MONTH(),DAY(),WEEKDAY() - 日期计算函数 :
DATE(),DATEDIF(),EOMONTH(),WEEKNUM() - 其他函数 :
HOUR(),MINUTE(),SECOND(),TIME(),TIMEVALUE()