2.2.5 实用的日期计算函数
Excel中的一系列日期计算函数可以快速处理日期和时间数据。常见的日期计算函数包括获取当前日期和时间的TODAY、NOW函数,返回日期的年份、月份、天数的YEAR、MONTH、DAY函数,返回时间的小时、分钟、秒数的HOUR、MINUTE、SECOND函数,拼接日期的DATE函数和拼接时间的TIME函数,获取星期几的WEEKDAY函数和计算一年中第几周的WEEKNUM函数,计算两个日期间隔的年份、月份、天数、工作日的DATEDIF、DAYS、NETWORKDAYS函数等。日常工作中制作业务报表或业务分析时,需要在不同日期维度上对业务指标进行统计,因此必须熟练掌握日期计算函数对业务数据中的日期字段进行处理的方法。下面通过实例对常用的日期计算函数进行举例说明。
1.TODAY函数
功能说明:返回当前日期的序列号(序列号是Excel用于日期和时间计算的日期-时间代码)。如果在输入该函数之前单元格格式为“常规”,Excel会将单元格格式更改为“日期”。若要显示序列号,必须将单元格格式更改为“常规”或“数字”。在默认情况下,1900年1月1日的序列号为1,2018年1月1日的序列号为43,101,因为它距1900年1月1日有43,100天。
语法:TODAY()
参数:无参数。
示例:区域A2:A5是TODAY函数相关的公式,区域B2:B5是计算说明,区域C2:C5是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=TODAY()”。
● 示例二:单元格C3内输入公式“=TODAY()-1”。
● 示例三:单元格C4内输入公式“=TODAY()+1”。
● 示例四:单元格C5内输入公式“=YEAR(TODAY())-1990”,结果如图2-76所示。
图2-76 TODAY函数
提示:TODAY函数返回的当前日期的序列号。如图2-76所示的TODAY函数返回的日期结果为“2018-10-23”,因为编写此函数功能介绍并截图的日期是“2018-10-23”。
2.NOW函数
功能说明:返回当前日期和时间的序列号。
语法:NOW()
参数:无参数。
示例:区域A2:A5是NOW函数相关的公式,区域B2:B5是计算说明,区域C2:C5是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=NOW()”。
● 示例二:单元格C3内输入公式“=NOW()-0.5”。
● 示例三:单元格C4内输入公式“=NOW()+0.5”。
● 示例四:单元格C5内输入公式“=NOW()+3”,结果如图2-77所示。
图2-77 NOW函数
提示:NOW函数返回当前日期和时间的序列号。由于Excel里面数值1代表日期的一天(24小时),所以在某个日期和时间上面加数值1代表返回一天后的日期和时间,加0.5代表返回12小时后的日期和时间。
3.YEAR、MONTH、DAY函数
功能说明:YEAR返回对应于某个日期的年份,YEAR作为1900~9999的整数返回。MONTH返回日期(以序列数表示)中的月份,月份是介于1到12的整数。DAY返回以序列数表示的某日期的天数,天数是介于1到31的整数。
语法:YEAR(serial_number)、MONTH(serial_number)、DAY(serial_number)
参数:serial_number必需。要处理的日期。
示例:区域A2:A4分别是YEAR、MONTH、DAY函数相关的公式,区域B2:B4是计算说明,区域C2:C4是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=YEAR("2018-05-01")”。
● 示例二:单元格C3内输入公式“=MONTH("2018-05-01")”。
● 示例三:单元格C4内输入公式“=DAY("2018-05-01")”,结果如图2-78所示。
图2-78 YEAR、MONTH、DAY函数
4.HOUR、MINUTE、SECOND函数
功能说明:HOUR返回时间值的小时数,小时是介于0到23的整数;MINUTE返回时间值的分钟数,分钟是一个介于0到59的整数;SECOND返回时间值的秒数,秒数是0到59的整数。
语法:HOUR(serial_number)、MINUTE(serial_number)、SECOND(serial_number)
参数:serial_number必需。要处理的日期。
示例:区域A2:A4分别是HOUR、MINUTE、SECOND函数相关的公式,区域B2:B4是计算说明,区域C2:C4是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=HOUR("12:15:30")”。
● 示例二:单元格C3内输入公式“=MINUTE("12:15:30")”。
● 示例三:单元格C4内输入公式“=SECOND("12:15:30")”,结果如图2-79所示。
图2-79 HOUR、MINUTE、SECOND函数
5.DATE函数
功能说明:返回表示特定日期的连续序列号。
语法:DATE(year,month,day)
参数:
● year必需。year参数的值可以包含一到四位数字。Excel将根据计算机正在使用的日期系统来解释year参数。在默认情况下,Microsoft Excel for Windows使用的是1900日期系统,这表示第一个日期为1900年1月1日。
● month必需。一个正整数或负整数,表示一年中从1月至12月(一月到十二月)的各个月。
● day必需。一个正整数或负整数,表示一个月中从1日到31日的各天。
示例:区域A2:A4分别是DATE函数公式,区域B2:B4是计算说明,区域C2:C4是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=DATE(2018,5,10)”。
● 示例二:单元格C3内输入公式“=DATE(2018,3,0)”。
● 示例三:单元格C4内输入公式“=DATE(2018,RANDBETWEEN(7,8), RANDBE-TWEEN(1,31))”,结果如图2-80所示。
图2-80 DATE函数
6.TIME函数
功能说明:返回特定时间的十进制数字。
语法:TIME(hour,minute,second)
参数:
● hour必需。用0到32767的数字代表小时。
● minute必需。用0到32767的数字代表分钟。
● second必需。用0到32767的数字代表秒。
示例:区域A2:A4分别是TIME函数公式,区域B2:B4是计算说明,区域C2:C4是计算结果。
公式与步骤:
● 示例一:单元格C2内输入公式“=TIME(10,20,45)”。
● 示例二:单元格C3内输入公式“=TIME(12,0,0)”。
● 示例三:单元格C4内输入公式“=TIME(RANDBETWEEN(0,23),RANDBETWEEN (0,59),RANDBETWEEN(0,59))”,结果如图2-81所示。
图2-81 TIME函数
7.DATEDIF函数
功能说明:计算两个日期之间间隔的年数、月数或天数。
语法:DATEDIF(start_date,end_date,unit)
参数:
● start_date必需。某个时间段的起始日期。
● end_date必需。某个时间段的结束日期。
● unit必需。要返回的计算类型。参数类型有“Y”“M”“D”“MD”“YM”“YD”。
示例:计算起始时间和结束时间之间的间隔年份、月份、天数。区域C2:C4分别是DATEDIF函数公式,区域D2:D4是计算说明,区域E2:E4是计算结果。
公式与步骤:
● 示例一:单元格E2内输入公式“=DATEDIF(A2,B2,"Y")”。
● 示例二:单元格E3内输入公式“=DATEDIF(A3,B3,"M")”。
● 示例三:单元格E4内输入公式“=DATEDIF(A4,B4,"D")”,结果如图2-82所示。
图2-82 DATEDIF函数
提示:
● 参数unit为“MD”表示start_date与end_date之间天数之差。忽略日期中的月份和年份。
● 参数unit为“YM”表示start_date与end_date之间月份之差。忽略日期中的天和年份
● 参数unit为“YD”表示start_date与end_date的日期部分之差。忽略日期中的年份。
以上是对日期计算函数的介绍,并采用示例对函数进行了功能讲解,下面的日期计算函数案例一~案例二是日期计算函数的应用扩展。对于同一个实例采用了多种方法来解决。
8.日期计算函数案例一
案例说明:区域A2:A11是一组日期数据(范围为2018/1/1~2018/12/31),需要计算不同日期对应的季度。
公式与步骤:
● 方法一:单元格C2内输入公式“=IF(MONTH(A2)<=3,1,IF(MONTH(A2)<=6,2,IF (MONTH(A2)<=9,3,4)))”,然后向下拖拽复制公式。
● 方法二:单元格D2内输入公式“=CEILING(MONTH(A2)/3,1)”,然后向下拖拽复制公式。
● 方法三:单元格E2内输入公式“=MATCH(MONTH(A2),{1,4,7,10},1)”,然后向下拖拽复制公式,结果如图2-83所示。
图2-83 日期计算函数案例一
9.日期计算函数案例二
案例说明:区域A2:A21是一组随机生成的时间数据(范围为00:00:00~23:59:59),需要统计不同时间段的时间数据个数(例如,[00:00:00~01:00:00),[1:00:00~2:00:00)区间的时间数据的个数)。
公式与步骤:
1)建立“区间下限”辅助字段,单元格B2内输入公式“=HOUR(A2)”,然后向下拖拽复制公式。
2)建立“区间上限”辅助字段,单元格C2内输入公式“=B2+1”,然后向下拖拽复制公式。
3)建立“拼接时间段”字段,单元格D2内输入公式“="["&B2&":00:00~"&C2&":00:00)"”,然后向下拖拽复制公式。
4)单元格G2内输入公式“=COUNTIFS(D:D,F2)”,然后向下拖拽复制公式,结果如图2-84所示。
图2-84 日期计算函数案例二