=DATE(2026,3,15) 返回 2026 年 3 月 15 日这个日期。三个参数依次是年、月、日,可以是数字或单元格引用。与之相反的函数 YEAR、MONTH 和 DAY 则把日期拆回这三个数字。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Year | Month | Day | Date |
| 2 | 2026 | 3 | 15 | 2026-03-15 |
| 3 | 2026 | 12 | 31 | 2026-12-31 |
| 4 | 2027 | 1 | 1 | 2027-01-01 |
| 5 | 2024 | 2 | 29 | 2024-02-29 |
每一行都变成了一个真正的日期,Excel 可以对它排序、相减和设置格式。把 B2 中的月份改成 7,D2 就变成 2026-07-15。参数顺序是固定的,年份在前,与你所在国家的日期书写顺序无关:=DATE(15,3,2026) 并不是 3 月 15 日。
YEAR、MONTH 和 DAY:把日期拆开
它们各自以数字形式返回日期的一部分。按年或按月分组、筛选时通常就用它们,例如放在供 SUMIF 或数据透视表读取的辅助列中。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Date | Year | Month | Day | Month name |
| 2 | 2026-03-15 | 2026 | 3 | 15 | March |
| 3 | 2025-11-02 | 2025 | 11 | 2 | November |
| 4 | 2024-02-29 | 2024 | 2 | 29 | February |
第一行得到 2026、3 和 15。MONTH 返回的是数字;要得到月份名称,用 TEXT 配合 "mmmm"(March)或 "mmm"(Mar),参见 TEXT 函数。
第 13 个月和第 0 天:DATE 如何进位
DATE 接受大于 12 的月份和超过月底的天数,并像日历那样把多出来的部分往后推。第 13 个月就是下一年的 1 月,第 0 天就是上个月的最后一天。这样一来,任意月份的第一天和最后一天都只需一行公式。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Formula | Result | Date | |
| 2 | Month 13 | 2027-01-01 | 2026-02-17 | |
| 3 | February 30 | 2026-03-02 | ||
| 4 | Day 0 of March | 2026-02-28 | ||
| 5 | First of the month | 2026-02-01 | ||
| 6 | Last of the month | 2026-02-28 |
DATE(2026,13,1) 是 2027-01-01,2 月 30 日变成 2026-03-02,3 月的第 0 天是 2026-02-28。第 5 行和第 6 行使用 D2 中的日期:把它改成任意日期,就能得到该月的第一天和最后一天,闰年也能正确处理(试试 2024-02-17)。EOMONTH 也能求月末,参见加减天数和月份。
把文本转换成日期
从其他系统导入的日期经常是文本。Excel 无法对文本做日期运算,所以要先转换。DATEVALUE 能读取 Excel 可识别格式的文本,例如 2026-03-15。像 20260315 这样的代码和 15.03.2026 这样的欧洲日期,需要用 LEFT、MID 和 RIGHT 截取,再用 DATE 拼回去。
| A | B | |
|---|---|---|
| 1 | Text | Date |
| 2 | 2026-03-15 | 2026-03-15 |
| 3 | 20260315 | 2026-03-15 |
| 4 | 15.03.2026 | 2026-03-15 |
三行都返回 2026-03-15。LEFT、MID 和 RIGHT 返回的是文本,DATE 会自动把 "2026" 和 "03" 转换成数字。DATEVALUE 取决于你的系统日期设置:"3/15/2026" 在美国设置下读作 3 月 15 日,而在日期以日开头的地区会报 #VALUE! 错误。如果只是转换一列数据,“数据 > 分列”不用公式就能原地转换:在第 3 步中选择“日期”,以及文本使用的顺序(15.03.2026 选 DMY)。
练习:生成日期
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Year | Month | Day | Date |
| 2 | 2026 | 4 | 17 |
轮到你了: 在 D2 中,用 A2 中的年、B2 中的月和 C2 中的日生成日期。
| A | B | |
|---|---|---|
| 1 | Code | Date |
| 2 | 20260917 |
轮到你了: A2 中是 yyyymmdd 形式的文本日期。在 B2 中把它转换成真正的日期。
常见错误:两位数年份
DATE 会把 0 到 1899 之间的年份当作相对于 1900 年的偏移量,所以两位数的年份会落到错误的世纪,而且没有任何报错。
| A | B | C | |
|---|---|---|---|
| 1 | Year | DATE | Fixed |
| 2 | 26 | 1926-03-15 | 2026-03-15 |
=DATE(26,3,15) 返回的是 1926-03-15,而不是 2026 年。当源数据是两位数年份时,像 C2 那样加上 2000;更好的做法是修正源数据,让它保存完整的年份。
常见问题
Excel 中 DATE 函数怎么用?
=DATE(year,month,day) 用三个数字返回一个日期:=DATE(2026,3,15) 就是 2026 年 3 月 15 日。参数可以是单元格引用,例如 =DATE(A2,B2,C2)。
如何从日期中提取年、月或日?
=YEAR(A2)、=MONTH(A2) 和 =DAY(A2) 以数字形式返回各部分。要得到月份名称,用 =TEXT(A2,"mmmm")。
如何在 Excel 中求某月的第一天?
=DATE(YEAR(A2),MONTH(A2),1) 返回 A2 所在月份的第一天。=DATE(YEAR(A2),MONTH(A2)+1,0) 返回最后一天,因为某月的第 0 天就是上个月的最后一天。
如何在 Excel 中把文本转换成日期?
如果文本是 Excel 能识别的格式,=DATEVALUE(A2) 就能转换。对于 20260315 这样的代码,先把各部分截取出来,再重新组成日期:=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))。
DATE 中的月份大于 12 会怎样?
DATE 会把它转入下一年:=DATE(2026,13,1) 是 2027-01-01,=DATE(2026,14,1) 是 2027-02-01。天数也以同样的方式进位,零或负数则往前推。