“今天”的英文单词为today。在Excel中也有一个TODAY函数。
在F5单元格中输入公式“=TODAY()”,如图11-1所示,便得到了当天的日期:2019/6/4。
图11-1TODAY函数
公式得到的今天的日期与【Ctrl+;】组合键得到的日期有什么区别吗?在F6单元格按下【Ctrl+;】组合键,同样得到当天的日期2019/6/4,如图11-2所示。
图11-2按快捷键生成当前日期
这时,我们看下公式编辑栏,在图11-1中显示的是“=TODAY()”,它是一个函数,今天打开该文件看到的是6月4日,明天打开看时就会变成6月5日。
在图11-2中,编辑栏显示2019/6/4,它就永远停留在6月4日了。
案例:计算得到指定的日期
已经有了当天日期,那么在计算时还需要一个指定日期。
日期的英文单词是date,于是就有日期函数“=DATE(2017,2,8)”,如图11-3所示,得到结果2017/2/8,DATE函数的语法为DATE(year,month,day),3个参数分别指定年、月、日。
图11-3 DATE函数
如果使用DATE函数生成1月最后一天的日期,怎么操作?有些人可能会说,这很简单,输入公式“=DATE(2017,1,31)”就可以了。那么2月、3月、4月的最后一天的日期怎么生成呢?还要逐个预先判断每个月一共有多少天吗?
10.1节讲过一句话:日期就是数字。从这个角度考虑,1月的最后一天比2月1日提前一天,即比2月1日小1,公式为:
=DATE(2017,2,1)-1
通过减法的操作方式得到的结果完全正确,那还有没有其他表达方式呢?比2月1日小1,比1日小1就是0日,那么DATE函数是否可以接受数字0呢?在D12单元格中试着输入公式:
=DATE(2017,2,0)
如图11-4所示,结果完全正确,1月最后一天的日期为2017/1/31。
图11-4生成月底日期
同理,如果输入公式“=DATE(2017,3,0)”,结果为2017/2/28,这样就不用判断每个月到底有多少天了。
那么它的参数能不能写成负数呢?
我们结合一些可能发生的实际情况思考一下,如有的公司财务结账日是在每个月的倒数第5天,这个日期要怎样生成?
DATE函数的参数day写为0,表示倒数第1天,那么以此为基准推算:-1表示倒数第2天,-2表示倒数第3天,-3表示倒数第4天,-4表示倒数第5天。在E12单元格中输入公式“=DATE(2017,2,-4)”,如图11-5所示,得到结果2017/1/27,结果完全正确。
图11-5月底倒数第5天
同理,输入公式“=DATE(2017,3,-4)”,得到结果2017/2/24,即2月的倒数第5天。
在DATE函数中,参数day和month支持正数、零、负数,所以计算时要始终记得日期就是数字的本质。
生成某年最后一天的日期就更简单了,那么2016年最后一天的日期怎么表示?
第一种方法=DATE(2016,12,31),因为每年最后一天都是12月31日,所以不绕圈子,直接写。
第二种方法=DATE(2017,1,0),2016年最后一天也就是2017年1月0日,如图11-6所示。
图11-6年底日期
案例:提取日期中的年月日信息
我们可以得到今天的日期及生成指定的日期,反过来,也可以使用YEAR函数、MONTH函数、DAY函数从一个标准日期中提取出它的年、月、日信息,如图11-7所示。
图11-7年月日信息
在D20单元格中输入公式“=YEAR($C$20)”,结果返回年份2017。
在D21单元格中输入公式“=MONTH($C$20)”,结果返回月份2。
在D22单元格中输入公式“=DAY($C$20)”,结果返回日期8。
很多Excel函数理解起来很简单,只要稍稍有点英语基础,就大约能猜出来它们是用来做什么的。
这3个函数还有其他的作用。例如,以后做透视表,你的基础数据源中有一列是日期,那么可以加几个辅助列,把年、月、日信息提取出来,在做透视表时就可以轻松选择相应的字段并完成统计。
计算月底、年底等日期的通用思路
首先说明,接下来谈到的月底、年底是指每月的最后一天和年度的最后一天。
上个月最后一天
我们在做月报时,经常要将上个月的最后一天,作为月报的一个节点。那么这个日期如何不用手动输入就能自动更新呢?
下面先来分解思路。
(1)在现有的知识体系下,要得到某一个日期,直接就想到了DATE函数,需要将年月日的数字组合到DATE公式中即可。
(2)上月最后一天,根据前面介绍的获取月底日期的方式可得,获取月底日期就是要获取本月的0日,因此参数day就确定了数字0。
(3)本月的0日,还需要知道本月是几月。我们可以先确定今天的日期,用TODAY函数,再提取月份公式为MONTH(TODAY())。
(4)虽然前面都在说月份,其实这里有隐含条件,即要获取的年份与今天的年份是一致的,也就是公式YEAR(TODAY())能得到今天的年份。
至此,年、月、日参数全都分析、拆解完毕,就剩下组装了,如图11-8所示,在D25单元格中输入公式:
图11-8上月最后一天
=DATE(YEAR(TODAY()),MONTH(TODAY()),0)
这个公式是一个三层嵌套公式,分析之后,就会发现嵌套公式也不过如此。