excel日期函数都在这儿啦!
DATE(year,month,day)
如果需要采用三个单独的值并将它们合并为一个日期,请使用 Excel 的 DATE 函数。DATE 函数返回表示特定日期的连续序列号。
- year 必需。 year 参数 的值 可以包含 1
到 4 个数字。
提示: 为避免出现意外结果,请对 year 参数使用四位数字。 例如,“07”可能意味着“1907”或“2007”。 因此,使用四位数的年份可避免混淆。 - 如果 year 介于 0(零)到 1899 之间(包含这两个值),则 Excel 会将该值与 1900 相加来计算年份。 例如,DATE(108,1,2) 返回 2008 年 1 月 2 日 (1900+108)。
- 如果 year 介于 1900 到 9999 之间(包含这两个值),则 Excel 将使用该数值作为年份。 例如,DATE(2008,1,2) 将返回 2008 年 1 月 2 日。
- 如果 年份 小于 0 或大于 10000,Excel 将返回#NUM! 错误值。
- Month 必需。 一个正整数或负整数,表示一年中从 1 月至 12 月(一月到十二月)的各个月。
- 如果 month 大于 12,则 month 会从指定年份的第一个月开始加上该月份数。 例如,DATE(2008,14,2) 返回表示 2009 年 2 月 2 日的序列数。
- 如果 month 小于 1,则 month 会从指定年份的第一个月开始减去该月份数,然后再加上 1 个月。 例如,DATE(2008,-3,2) 返回表示 2007 年 9 月 2 日的序列号。
- Day 必需。 一个正整数或负整数,表示一月中从 1 日到 31 日的各天。
- 如果 day 大于指定月中的天数,则 day 会从该月的第一天开始加上该天数。 例如,DATE(2008,1,35) 返回表示 2008 年 2 月 4 日的序列数。
- 如果 day 小于 1,则 day 从指定月份的第一天开始减去该天数,然后再加上 1 天。 例如,DATE(2008,1,-15) 返回表示 2007 年 12 月 16 日的序列号。
DATEDIF(start_date,end_date,unit)
计算两个日期之间相隔的天数、月数或年数。
参数 |
描述 |
||||||||||||||
start_date 必需 |
表示给定期间的第一个或开始日期的日期。 日期值有多种输入方式:带引号的文本字符串(例如 "2001/1/30")、序列号(例如 36921,在商用 1900 日期系统时表示 2001 年 1 月 30 日)或其他公式或函数的结果(例如 DATEVALUE("2001/1/30"))。 |
||||||||||||||
end_date 必需 |
用于表示时间段的最后一个(即结束)日期的日期。 |
||||||||||||||
Unit |
要返回的信息类型,其中:
|
备注: DATEDIF 函数在用于计算年龄的公式中很有用。如果s tart_date大于 end_date,则结果将为#NUM!。
已知问题: “MD”参数可能导致出现负数、零或不准确的结果。 若要计算上一完整月份后余下的天数,可使用如下方法:
此公式从单元格 E17 中的原始结束日期 (5/6/2016) 减去当月第一天 (5/1/2016)。 其原理如下:首先,DATE 函数会创建日期 5/1/2016。 DATE 函数使用单元格 E17 中的年份和单元格 E17 中的月份创建日期。 1 表示该月的第一天。 DATE 函数的结果是 5/1/2016。 然后,从单元格 E17 中的原始结束日期(即 5/6/2016)减去该日期。 5/6/2016 减 5/1/2016 得 5 天。
DATEVALUE(date_text)
将存储为文本的日期转换为 Excel 识别为日期的序列号。
- Date_text 必需。 以 Excel 日期格式表示日期的文本,或对包含以 Excel 日期格式表示日期的文本的单元格的引用。
例如,"1/30/2008"或"30-Jan-2008"是表示日期的引号中的文本字符串。
使用 Microsoft Excel for Windows 中的默认日期系统 ,date_text 参数必须表示 1900 年 1 月 1 日到 9999 年 12 月 31 日之间的日期。如果date_text 参数的值超出此范围,DATEVALUE函数返回#VALUE! 错误值。
如果省略参数 date_text 中的年份部分,则 DATEVALUE 函数会使用计算机内置时钟的当前年份。 参数 date_text 中的时间信息将被忽略。
备注:
- Excel 可将日期存储为序列号,以便可以在计算中使用它们。 默认情况下,1900 年 1 月 1 日的序列号为 1,2008 年 1 月 1 日的序列号为 39,448,这是因为它距 1900 年 1 月 1 日有 39,447 天。
- 大部分函数都会自动将日期值转换为序列数。
DAY(serial_number)
返回以序列数表示的某日期的天数。 天数是介于 1 到 31 之间的整数。
- Serial_number 必需。 要查找的日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
备注:
- Microsoft Excel 可将日期存储为可用于计算的序列号。 默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。
- 无论提供的日期值的显示格式如何,YEAR、MONTH 和 DAY 函数返回的值都是公历值。 例如,如果提供的日期的显示格式是回历,则 YEAR、MONTH 和 DAY 函数返回的值将是与对应的公历日期相关联的值。
SECOND(serial_number)
返回时间值的秒数。 秒数是 0(零)到 59 范围内的整数。
- Serial_number 必需。 一个时间值,其中包含要查找的秒数。 时间值有多种输入方式:带引号的文本字符串(例如 "6:45 PM")、十进制数(例如 0.78125 表示 6:45 PM)或其他公式或函数的结果(例如 TIMEVALUE("6:45 PM"))。
备注:
- 时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
MINUTE(serial_number)
返回时间值中的分钟。 分钟是一个介于 0 到 59 之间的整数。
- Serial_number 必需。 一个时间值,其中包含要查找的分钟。 时间值有多种输入方式:带引号的文本字符串(例如 "6:45 PM")、十进制数(例如 0.78125 表示 6:45 PM)或其他公式或函数的结果(例如 TIMEVALUE("6:45 PM"))。
备注:
- 时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
HOUR(serial_number)
返回时间值的小时数。 小时数是介于 0 (12:00 A.M.) 到 23 (11:00 P.M.) 之间的整数。
- Serial_number 必需。 时间值,其中包含要查找的小时数。 时间值有多种输入方式:带引号的文本字符串(例如 "6:45 PM")、十进制数(例如 0.78125 表示 6:45 PM)或其他公式或函数的结果(例如 TIMEVALUE("6:45 PM"))。
备注:
- 时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
MONTH(serial_number)
返回日期(以序列数表示)中的月份。 月份是介于 1(一月)到 12(十二月)之间的整数。
- Serial_number 必需。 要查找的月份日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
DAYS(end_date, start_date)
返回两个日期之间的天数。
- End_date 必需。 Start_date 和 End_date 是用于计算期间天数的起止日期。
- Start_date 必需。 Start_date 和 End_date 是用于计算期间天数的起止日期。
- 注意: Excel 可将日期存储为序列号,以便可以在计算中使用它们。 默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39447 天。
备注:
- 如果两个日期参数为数字,DAYS 使用 EndDate–StartDate 计算两个日期之间的天数。
- 如果任何一个日期参数为文本,该参数将被视为 DATEVALUE(date_text) 并返回整型日期,而不是时间组件。
- 如果日期参数是超出有效日期范围的数值,DAYS 返回 #NUM! 错误值。
- 如果日期参数是无法解析为字符串的有效日期,DAYS 返回 #VALUE! 错误值。
DAYS360(start_date,end_date,[method])
按照一年 360 天的算法(每个月以 30 天计,一年共计 12 个月),DAYS360 函数返回两个日期间相差的天数,这在一些会计计算中将会用到。 如果财会系统是基于一年 12 个月,每月 30 天,可使用此函数帮助计算支付款项。
- Start_date、end_date 必需。 用于计算期间天数的起止日期。 如果 start_date 在 end_date 之后,则 DAYS360 函数将返回一个负数。 应使用 DATE 函数输入日期,或者将从其他公式或函数派生日期。 例如,使用函数 DATE(2008,5,23) 以返回 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
- method 可选。 逻辑值,用于指定在计算中是采用美国方法 还是欧洲方法。
方法 |
定义 |
FALSE 或省略 |
美国 (NASD) 方法。 如果起始日期是一个月的最后一天,则等于同月的 30 号。 如果终止日期是一个月的最后一天,并且起始日期早于 30 号,则终止日期等于下一个月的 1 号,否则,终止日期等于本月的 30 号。 |
TRUE |
欧洲方法。 如果起始日期和终止日期为某月的 31 号,则等于当月的 30 号。 |
注意: Excel 可将日期存储为序列号,以便可以在计算中使用它们。 默认情况下,1900 年 1 月 1 日的序列号为 1,2008 年 1 月 1 日的序列号为 39,448,这是因为它距 1900 年 1 月 1 日有 39,447 天。
EDATE(start_date, months)
返回表示某个日期的序列号,该日期与指定日期 (start_date) 相隔(之前或之后)指示的月份数。 使用函数 EDATE 可以计算与发行日处于一月中同一天的到期日的日期。
- Start_date 必需。 一个代表开始日期的日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
- Months 必需。 start_date 之前或之后的月份数。 months 为正值将生成未来日期;为负值将生成过去日期。
备注:
- Microsoft Excel 可将日期存储为可用于计算的序列号。 默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。
- 如果start_date日期无效,则 EDATE 返回#VALUE! 错误值。
- 如果 months 不是整数,将截尾取整。
EOMONTH(start_date, months)
返回某个月份最后一天的序列号,该月份与 start_date 相隔(之后或之后)指示的月份数。 使用函数 EOMONTH 可以计算正好在特定月份中最后一天到期的到期日。
- Start_date 必需。 表示开始日期的日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
- Months 必需。
start_date 之前或之后的月份数。 months 为正值将生成未来日期;为负值将生成过去日期。
注意: 如果 months 不是整数,将截尾取整。
备注:
- Microsoft Excel 可将日期存储为可用于计算的序列号。 默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。
- 如果start_date日期无效,则 EOMONTH 返回#NUM! 错误值。
- 如果start_date加月生成无效日期,则 EOMONTH 返回#NUM! 错误值。
ISOWEEKNUM(date)
返回给定日期在全年中的 ISO 周数。
- 日期 必需。 日期是 Excel 用于日期和时间计算的日期时间代码。
备注:
- Microsoft Excel 可将日期存储为可用于计算的序列数字。 默认情况下,1900 年 1 月 1 日的序列数字是 1,而 2008 年 1 月 1 日的序列数字是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。
- 如果日期参数为无效数值,则 ISOWEEKNUM 将返回错误值 #NUM! 。
- 如果日期参数为无效日期类型,则 ISOWEEKNUM 将返回错误值 #VALUE! 。
NETWORKDAYS(start_date, end_date, [holidays])
返回参数 start_date 和 end_date 之间完整的工作日数值。 工作日不包括周末和专门指定的假期。 可以使用函数 NETWORKDAYS,根据某一特定时期内雇员的工作天数,计算其应计的报酬。
- Start_date 必需。 一个代表开始日期的日期。
- End_date 必需。 一个代表终止日期的日期。
- Holidays 可选。 不在工作日历中的一个或多个日期所构成的可选区域,例如:省/市/自治区和国家/地区的法定假日以及其他非法定假日。 该列表可以是包含日期的单元格区域,或是表示日期的序列号的数组常量。
重要: 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2012,5,23) 输入 2012 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
Now()
返回当前日期和时间的序列号。 如果在输入该函数前,单元格格式为“常规”,Excel 会更改单元格格式,使其与区域设置的日期和时间格式匹配。 可以在功能区“开始”选项卡上的“数字”组中使用命令来更改日期和时间格式。
当需要在工作表上显示当前日期和时间或者需要根据当前日期和时间计算一个值并在每次打开工作表时更新该值时,使用 NOW 函数很有用。
注意: 如果 NOW 函数并未按预期更新单元格值,则可能需要更改控制工作簿或工作表何时重新计算的设置。 这些设置可以在 Excel 桌面应用程序的“控制面板”中更改。
备注:
- Excel 可将日期存储为序列号,以便可以在计算中使用它们。 默认情况下,1900 年 1 月 1 日的序列号为 1,2008 年 1 月 1 日的序列号为 39,448,这是因为它距 1900 年 1 月 1 日有 39,447 天。
- 序列号中小数点右边的数字表示时间,左边的数字表示日期。 例如,序列号 0.5 表示时间为中午 12:00。
- NOW 函数的结果仅在计算工作表或运行含有该函数的宏时才改变。 它并不会持续更新。
TIME(hour, minute, second)
返回特定时间的十进制数字。 如果在输入该函数之前单元格格式为“常规”,则结果将使用日期格式。
由 TIME 返回的十进制数字是一个范围在 0(零)到 0.99988426 之间的值,表示 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 P.M.) 之间的时间。
- hour 必需。 0(零)到 32767 之间的数字,代表小时。 任何大于 23 的值都会除以 24,余数将作为小时值。 例如,TIME(27,0,0) = TIME(3,0,0) = .125 或 3:00 AM。
- minute 必需。 0 到 32767 之间的数字,代表分钟。 任何大于 59 的值将转换为小时和分钟。 例如,TIME(0,750,0) = TIME(12,30,0) = .520833 或 12:30 PM。
- second 必需。 0 到 32767 之间的数字,代表秒。 任何大于 59 的值将转换为小时、分钟和秒。 例如,TIME(0,0,2000) = TIME(0,33,22) = .023148 或 12:33:20 AM
注解:
- 时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
TIMEVALUE(time_text)
返回由文本字符串表示的时间的十进制数字。 十进制数字是一个范围在 0(零)到 0.99988426 之间的值,表示 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 P.M.) 之间的时间。
- time_text 必需。 一个文本字符串,代表以任一 Microsoft Excel 时间格式表示的时间(例如,代表时间的具有引号的文本字符串 "6:45 PM" 和 "18:45")。
备注:
- time_text 中的日期信息会被忽略。
- 时间值为日期值的一部分,并用十进制数表示(例如 12:00 PM 可表示为 0.5,因为此时是一天的一半)。
TODAY()
返回当前日期的序列号。如果在输入该函数之前单元格格式为“常规”,Excel会将单元格格式更改为“日期”。 若要显示序列号,您必须将单元格格式更改为“常规”或“数字”。
TODAY 函数语法没有参数。
WEEKDAY(serial_number,[return_type])
返回对应于某个日期的一周中的第几天。 默认情况下,天数是 1(星期日)到 7(星期六)范围内的整数。
- Serial_number 必需。 一个序列号,代表尝试查找的那一天的日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
- Return_type 可选。 用于确定返回值类型的数字。
Return_type |
返回的数字 |
1 或省略 |
数字 1(星期日)到 7(星期六)。 同 Microsoft Excel 早期版本。 |
2 |
数字 1(星期一)到 7(星期日)。 |
3 |
数字 0(星期一)到 6(星期日)。 |
11 |
数字 1(星期一)到 7(星期日)。 |
12 |
数字 1(星期二)到数字 7(星期一)。 |
13 |
数字 1(星期三)到数字 7(星期二)。 |
14 |
数字 1(星期四)到数字 7(星期三)。 |
15 |
数字 1(星期五)到数字 7(星期四)。 |
16 |
数字 1(星期六)到数字 7(星期五)。 |
17 |
数字 1(星期日)到 7(星期六)。 |
备注:
- 如果serial_number日期基准值的范围外,则返回#NUM! 错误。
- 如果return_type超过上表中指定的范围,则#NUM! 错误。
WEEKNUM(serial_number,[return_type])
返回特定日期的周数。 例如,包含 1 月 1 日的周为该年的第 1 周,其编号为第 1 周。
此函数可采用两种机制:
机制 1 包含 1 月 1 日的周为该年的第 1 周,其编号为第 1 周。
机制 2 包含该年的第一个星期四的周为该年的第 1 周,其编号为第 1 周。 此机制是 ISO 8601 指定的方法,通常称作欧洲周编号机制。
- Serial_number 必需。 代表一周中的日期。 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
- Return_type 可选。 一数字,确定星期从哪一天开始。 默认值为 1。
Return_type |
一周的第一天为 |
机制 |
1 或省略 |
星期日 |
1 |
2 |
星期一 |
1 |
11 |
星期一 |
1 |
12 |
星期二 |
1 |
13 |
星期三 |
1 |
14 |
星期四 |
1 |
15 |
星期五 |
1 |
16 |
星期六 |
1 |
17 |
星期日 |
1 |
21 |
星期一 |
2 |
备注:
- 如果Serial_number日期基值的范围外,则返回#NUM! 错误。
- 如果Return_type超过上表中指定的范围,则#NUM! 错误。
WORKDAY(start_date, days, [holidays])
返回在某日期(起始日期)之前或之后、与该日期相隔指定工作日的某一日期的日期值。 工作日不包括周末和专门指定的假日。 在计算发票到期日、预期交货时间或工作天数时,可以使用函数 WORKDAY 来扣除周末或假日。
- Start_date 必需。 一个代表开始日期的日期。
- Days 必需。 start_date 之前或之后不含周末及节假日的天数。 Days 为正值将生成未来日期;为负值生成过去日期。
- Holidays 可选。 一个可选列表,其中包含需要从工作日历中排除的一个或多个日期,例如各种省/市/自治区和国家/地区的法定假日及非法定假日。 该列表可以是包含日期的单元格区域,也可以是由代表日期的序列号所构成的数组常量。
重要: 应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。 例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。 如果日期以文本形式输入,则会出现问题。
备注:
- 如果任一参数不是有效日期,则 WORKDAY 返回#VALUE! 错误值。
- 如果start_date日生成无效日期,则 WORKDAY 返回#NUM! 错误值。
- 如果 days 不是整数,将截尾取整。
WORKDAY.INTL(start_date, days, [weekend], [holidays])
返回指定的若干个工作日之前或之后的日期的序列号(使用自定义周末参数)。 周末参数指明周末有几天以及是哪几天。 周末和任何指定为假期的日期不被视为工作日。
- Start_date 必需。 开始日期(将被截尾取整)。
- Days 必需。 Start_date 之前或之后的工作日的天数。 正值表示未来日期;负值表示过去日期;零值表示开始日期。 Day-offset 将被截尾取整。
- weekend 可选。
指示一周中属于周末的日子和不作为工作日的日子。 Weekend 是一个用于指定周末日的周末数字或字符串。
weekend 数值表示以下周末日:
周末数字 |
周末日 |
1 或省略 |
星期六、星期日 |
2 |
星期日、星期一 |
3 |
星期一、星期二 |
4 |
星期二、星期三 |
5 |
星期三、星期四 |
6 |
星期四、星期五 |
7 |
星期五、星期六 |
11 |
仅星期日 |
12 |
仅星期一 |
13 |
仅星期二 |
14 |
仅星期三 |
15 |
仅星期四 |
16 |
仅星期五 |
17 |
仅星期六 |
周末字符串值的长度为七个字符,并且字符串中的每个字符表示一周中的一天(从星期一开始)。 1 表示非工作日,0 表示工作日。 在字符串中仅允许使用字符 1 和 0。 1111111 是无效字符串。
例如,0000011 结果为星期六和星期日是周末。
- holidays 可选。 一组可选的日期,表示要从工作日日历中排除的一个或多个日期。 holidays 应是一个包含相关日期的单元格区域,或者是一个由表示这些日期的序列值构成的数组常量。 holidays 中的日期或序列值的顺序可以是任意的。
备注:
- 如果start_date当前日期基准值 WORKDAY 的范围外。INTL 返回#NUM! 错误值。
- 如果 holidays 中的任一日期不在当前日期基准值的范围之内,则 WORKDAY。INTL 返回#NUM! 错误值。
- 如果start_date日偏移量产生无效日期,则 WORKDAY。INTL 返回#NUM! 错误值。
- 如果周末字符串的长度无效或包含无效字符,则 WORKDAY。INTL 返回#VALUE! 错误值。