网站首页 > 技术教程 正文
Excel 日期函数看似复杂,但只要理解其核心逻辑,就能轻松掌握。这份指南专为新人设计,从基础概念到实用技巧,手把手带你玩转日期计算。
核心理念:Excel 把日期当数字处理!这是新人最需要理解的关键点!
序列值: Excel 内部将日期存储为整数(称为序列值),代表自 1900 年 1 月 1 日(Windows 系统默认)或 1904 年 1 月 1 日(Mac 系统早期默认,可选)以来的天数。
例如:2023 年 10 月 27 日 在 Windows Excel 中大约是 45222(具体数值取决于你的系统日期)。
时间: 时间被视为一天中的小数部分。例如,中午 12:00 PM 是 0.5,因为它是半天。
显示格式: 单元格格式决定了数字如何显示成我们熟悉的日期或时间(如 “2023/10/27”, “10:30 AM”)。
查看序列值:
在一个单元格输入 =TODAY() 或 =NOW()。
选中该单元格。
按 Ctrl + 1 打开“设置单元格格式”对话框。
选择“常规”格式,点击“确定”。你会看到一个数字(如 45222.xxxx),这就是该日期/时间的序列值。
再按 Ctrl + 1,选择回你需要的日期格式即可恢复显示。
一、最常用核心日期函数详解与实操
TODAY() - 获取今天日期功能: 返回当前系统日期(不含时间)。每次打开工作簿或工作表重新计算时自动更新。
语法: =TODAY()
参数: 无
实操:
在单元格 A1 输入 =TODAY(),回车。显示今天的日期(如 2023-10-27)。
明天打开文件,A1 会自动变成明天的日期。
NOW() - 获取当前日期和时间功能: 返回当前系统日期和时间。每次打开工作簿或工作表重新计算时自动更新。
语法: =NOW()
参数: 无
实操:
在单元格 A2 输入 =NOW(),回车。显示当前的日期和时间(如 2023-10-27 14:30:15)。
按 F9 键(强制重新计算工作表),时间部分会更新。
DATE(year, month, day) - 构造指定日期功能: 将给定的年、月、日数字组合成一个有效的日期序列值。
语法: =DATE(年份, 月份, 日)
参数:
year:年份数字(1900-9999)。可以用负数或大于 9999 的数字,但结果可能不符合预期。
month:月份数字(1-12)。可以大于 12 或小于 1,Excel 会自动推算。例如:
DATE(2023, 13, 1) 返回 2024 年 1 月 1 日
DATE(2023, 0, 15) 返回 2022 年 12 月 15 日
DATE(2023, -1, 10) 返回 2022 年 11 月 10 日
day:日数字(1-31)。可以大于该月的天数或小于 1,Excel 会自动推算到相应月份。例如:
DATE(2023, 2, 30) 返回 2023 年 3 月 2 日(因为 2023 年 2 月只有 28 天)
DATE(2023, 5, 0) 返回 2023 年 4 月 30 日
DATE(2023, 6, -5) 返回 2023 年 5 月 26 日
实操:
在单元格 B1 输入 2023,B2 输入 10,B3 输入 27。
在 B4 输入 =DATE(B1, B2, B3),回车。显示 2023-10-27。
尝试修改 B2 为 15,B4 自动变成 2024-3-27(因为 15 个月=1 年 3 个月)。
尝试修改 B3 为 35,B4 自动变成 2023-11-4(10 月 31 天,35-31=4 天进入 11 月)。
DATEDIF(start_date, end_date, unit) - 计算两个日期之间的差值 (隐藏但超实用!)功能: 计算两个日期之间相差的年、月或天数。注意: 此函数在函数列表和 Excel 帮助中可能找不到,但可以直接使用,兼容性好。
语法: =DATEDIF(开始日期, 结束日期, "单位代码")
参数:
start_date:较早的日期。
end_date:较晚的日期。如果 end_date 早于 start_date,结果会是负数。
unit:指定计算差值的单位,必须用双引号括起来:
"Y":计算整年数(不足一年的部分忽略)。
"M":计算整月数(不足一月的部分忽略)。
"D":计算天数。
"MD":忽略年和月,计算日期差(同月内的天数差,或跨月但忽略月年)。
"YM":忽略年和日,计算月份差(同年内或忽略年)。
"YD":忽略年,计算日期差(同一年内的天数差,或忽略年)。
重要提示: "MD" 和 "YD" 在某些边界情况下(如月末)结果可能不符合直觉,使用需谨慎。"Y", "M", "D", "YM" 最常用。
实操:
在 C1 输入入职日期 2020-05-15。
在 C2 输入 =TODAY()(假设今天是 2023-10-27)。
计算工作年数:在 C3 输入 =DATEDIF(C1, C2, "Y"),结果为 3(整年)。
计算工作月数:在 C4 输入 =DATEDIF(C1, C2, "M"),结果为 41(整月)。
计算工作天数:在 C5 输入 =DATEDIF(C1, C2, "D"),结果为 1261。
计算今年工作了多少个月:在 C6 输入 =DATEDIF(C1, C2, "YM"),结果为 5(从 5 月到 10 月)。
(谨慎使用) 计算本月工作了多少天:在 C7 输入 =DATEDIF(C1, C2, "MD"),结果为 12(从 15 号到 27 号)。注意:如果开始日期是 2023-01-31,结束日期是 2023-02-28,"MD" 结果会是 -3,因为 Excel 处理月末逻辑特殊。
DAY(date) / MONTH(date) / YEAR(date) - 提取日/月/年功能: 从一个日期序列值中提取出日、月、年的数字。
语法:
=DAY(日期) 返回 1 到 31 之间的数字。
=MONTH(日期) 返回 1 到 12 之间的数字。
=YEAR(日期) 返回 1900 到 9999 之间的四位数字。
实操:
在 D1 输入一个日期 2023-10-27。
在 D2 输入 =DAY(D1),结果为 27。
在 D3 输入 =MONTH(D1),结果为 10。
在 D4 输入 =YEAR(D1),结果为 2023。
组合应用: 计算下个月 1 号:=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
二、进阶实用日期函数与技巧
- EOMONTH(start_date, months) - 获取某月最后一天
- 功能: 返回指定日期之前或之后数月的那一月的最后一天的日期。计算月末神器!
- 语法: =EOMONTH(开始日期, 月数)
- 参数:
- start_date:基准日期。
- months:从 start_date 开始之前或之后的月数。正数表示未来,负数表示过去。0 表示 start_date 所在月的最后一天。
- 实操:
- 在 E1 输入 =TODAY()(假设 2023-10-27)。
- 获取本月最后一天:在 E2 输入 =EOMONTH(E1, 0),结果为 2023-10-31。
- 获取下个月最后一天:在 E3 输入 =EOMONTH(E1, 1),结果为 2023-11-30。
- 获取上个月最后一天:在 E4 输入 =EOMONTH(E1, -1),结果为 2023-09-30。
- WORKDAY(start_date, days, [holidays]) - 计算工作日(排除周末和节假日)
- 功能: 返回在指定日期之前或之后数个工作日(排除周六、周日和自定义节假日)的日期。常用于计算项目截止日、任务到期日。
- 语法: =WORKDAY(开始日期, 工作日天数, [节假日列表])
- 参数:
- start_date:基准日期。
- days:从 start_date 开始之前(负数)或之后(正数)的工作日天数。不包括周末和节假日。
- [holidays]:可选。一个包含要排除的节假日的单元格区域或数组常量。这些日期可以是任何格式,只要 Excel 能识别为日期即可。
- 实操:
- 在 F1 输入项目开始日 2023-10-27(周五)。
- 计算 5 个工作日后的日期(忽略节假日):在 F2 输入 =WORKDAY(F1, 5),结果为 2023-11-03(计算过程:10/27(五)->10/30(一), 31(二), 11/1(三), 2(四), 3(五))。
- 加入节假日: 假设 2023-11-01 是节假日。在 G1 输入 2023-11-01。
- 计算 5 个工作日后的日期(排除节假日):在 F3 输入 =WORKDAY(F1, 5, G1),结果为 2023-11-06(因为 11 月 1 日被排除,顺延到 11 月 6 日周一)。
- NETWORKDAYS(start_date, end_date, [holidays]) - 计算两个日期之间的工作日天数
- 功能: 返回两个日期之间的完整工作日天数(排除周六、周日和自定义节假日)。常用于计算工作耗时、考勤。
- 语法: =NETWORKDAYS(开始日期, 结束日期, [节假日列表])
- 参数:
- start_date:开始日期。
- end_date:结束日期。
- [holidays]:可选。要排除的节假日列表。
- 实操:
- 在 H1 输入任务开始日 2023-10-23(周一)。
- 在 H2 输入任务结束日 2023-10-27(周五)。
- 计算这周有多少个工作日(无节假日):在 H3 输入 =NETWORKDAYS(H1, H2),结果为 5(周一到周五)。
- 假设 2023-10-25(周三)是假期。在 I1 输入 2023-10-25。
- 计算实际工作日:在 H4 输入 =NETWORKDAYS(H1, H2, I1),结果为 4(周一、二、四、五)。
- WEEKDAY(date, [return_type]) - 判断星期几
- 功能: 返回代表某个日期是星期几的数字。
- 语法: =WEEKDAY(日期, [返回类型])
- 参数:
- date:要判断的日期。
- [return_type]:可选。决定数字如何代表星期几。常用选项:
- 1 或省略: 星期日 = 1,星期一 = 2, ..., 星期六 = 7 (默认)
- 2: 星期一 = 1,星期二 = 2, ..., 星期日 = 7 (国际标准 ISO 8601,推荐使用)
- 3: 星期一 = 0,星期二 = 1, ..., 星期日 = 6
- 实操:
- 在 J1 输入 =TODAY()(假设是 2023-10-27 星期五)。
- 判断是星期几(默认类型 1):在 J2 输入 =WEEKDAY(J1),结果为 6(表示星期五)。
- 判断是星期几(类型 2):在 J3 输入 =WEEKDAY(J1, 2),结果为 5(表示星期五)。
- 组合应用: 判断是否是周末 =IF(WEEKDAY(J1, 2) > 5, "周末", "工作日") 或 =IF(OR(WEEKDAY(J1)=1, WEEKDAY(J1)=7), "周末", "工作日")。
- DATEVALUE(date_text) - 将文本日期转换为序列值
- 功能: 将存储为文本的日期(如 "2023/10/27", "27-Oct-2023")转换为 Excel 可以识别的日期序列值。处理导入数据或文本格式日期必备!
- 语法: =DATEVALUE(日期文本)
- 参数:
- date_text:代表日期的文本字符串。Excel 必须能识别其格式。
- 实操:
- 在 K1 输入文本 "2023-10-27"(注意有英文双引号,或者直接输入 2023-10-27 但单元格格式为文本)。
- 在 K2 输入 =DATEVALUE(K1),结果为 45222(或对应的序列值)。
- 选中 K2,按 Ctrl + 1,将其格式设置为“日期”,即可正确显示为 2023-10-27。
- 尝试转换 "Oct 27, 2023" 或 "27/10/2023"(注意你的系统日期分隔符设置)。
三、新人必知实操技巧与避坑指南
单元格格式是关键!输入函数后显示一串数字?别慌!这是序列值。选中单元格 -> Ctrl + 1 -> “数字”选项卡 -> 分类选“日期” -> 选择你喜欢的格式(如 YYYY-MM-DD, YYYY 年 M 月 D 日)。
输入 20231027 想变成日期?先用 DATEVALUE(TEXT(20231027, "0000-00-00")) 或分列功能转换。
确保参与计算的单元格都是真正的日期格式,而不是文本。文本日期看起来像日期,但计算会出错(如 #VALUE!)。
灵活处理“年月日”分离数据数据源中日期被拆分成年、月、日三列?直接用 DATE 函数组合:=DATE(年所在列, 月所在列, 日所在列)。
动态日期计算下个月今天: =DATE(YEAR(TODAY()), MONTH(TODAY())+1, DAY(TODAY())) (注意:如果下个月没有今天的天数,如 1 月 31 日加 1 个月会变成 3 月 2 日或 3 月 3 日,用 EOMONTH 更安全)
本月第一天: =DATE(YEAR(TODAY()), MONTH(TODAY()), 1) 或 =EOMONTH(TODAY(), -1)+1
本月最后一天: =EOMONTH(TODAY(), 0)
季度末: 例如计算 Q1 末(3 月 31 日):=DATE(YEAR(A1), 3, 31)。更通用的季度末计算稍复杂,可用 DATE, MONTH, CEILING 组合。
处理时间差直接相减:结束日期单元格 - 开始日期单元格 = 天数差(小数代表时间)。
提取整天数:=INT(结束日期 - 开始日期) 或 =DATEDIF(开始日期, 结束日期, "D")
计算小时差:=(结束日期时间 - 开始日期时间) * 24 (结果为小数小时)
计算分钟差:=(结束日期时间 - 开始日期时间) * 24 * 60
错误处理#VALUE!:最常见!通常因为某个参数不是真正的日期(可能是文本)。用 ISNUMBER 检查单元格是否是数字(日期本质是数字)。用 DATEVALUE 转换文本日期。
#NUM!:日期超出了 Excel 支持的范围(早于 1900 年 1 月 1 日或太远的未来),或 DATEDIF 的 end_date 早于 start_date 且 unit 不支持负数。
结果不对:检查单元格格式是否正确设置为日期;检查 DATEDIF 的 unit 参数是否加了双引号;检查 WORKDAY/NETWORKDAYS 的节假日范围是否正确。
生日/纪念日提醒计算今年生日是否已过:=IF(DATE(YEAR(TODAY()), MONTH(生日), DAY(生日)) < TODAY(), "已过", "未过")
计算距离下次生日的天数:
今年生日:=DATE(YEAR(TODAY()), MONTH(生日), DAY(生日))
如果今年生日已过,则下次生日是明年:=IF(今年生日 < TODAY(), DATE(YEAR(TODAY())+1, MONTH(生日), DAY(生日)), 今年生日)
距离天数:=下次生日 - TODAY()
总结:
记住核心: 日期是数字,格式决定显示。
掌握核心函数: TODAY, NOW, DATE, DATEDIF, DAY/MONTH/YEAR 是基础。
活用进阶函数: EOMONTH (月末), WORKDAY/NETWORKDAYS (工作日计算), WEEKDAY (星期判断), DATEVALUE (文本转日期) 解决复杂问题。
重视格式: 确保参与计算的都是真日期,不是文本。
理解参数: 特别是 DATE 的月、日溢出规则和 DATEDIF 的 unit 参数含义。
动手实操: 打开 Excel,按照上面的例子一步步输入练习,是掌握最快的方法!
通过理解这些函数和技巧,你就能高效地处理 Excel 中的各种日期相关任务,从简单的日期显示到复杂的项目排期和员工考勤计算都不在话下。多加练习,你会越来越熟练!
猜你喜欢
- 2025-08-06 2025恋综追剧日历!各大平台更新时间全汇总,甜虐名场面不错过
- 2025-08-06 在Windows电脑上有哪些带有日历提醒的备忘录工具
- 2025-08-06 学生可提前20天预约购票!操作流程来了
- 2025-08-06 2025 闰六月,太阳月亮“时差”大揭秘!
- 2025-08-06 Python 数据转换实用技巧:3 分钟搞定杂乱数据,新手也能学会
- 2025-08-06 闰六月不常见,到底间隔多少年才会来一次?
- 2025-08-06 Excel日期筛选大全
- 2025-08-06 提取每个人最早和最晚日期的业绩,还要变成一维 Excel 表
- 2025-08-06 下周日就入伏!2025三伏天日历出炉引关注
- 2025-08-06 巧用等差序列数sequence填充序号/生成日期/隔行求和/Wps函数
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)