在Excel中日期是独特的存在,不过你可别被它的外表骗了,它的本质就是数字,它也有自己专有名词叫数字序列,每个序列对应距离1900年1月0日的天数;而实际它比现实中的天数却多了一天,因为软件中设定1900是闰年,没错就是2月29日这个实际并不存在的日期(详情可以翻看一文)。今天我们就来汇总一下,日期的函数有哪些?都可以用来干什么吧?
日期函数
日期三贱客:year,month,day
我们知道日期构成的三部分(暂忽略时间的部分)年,月,日;对应函数有year,month,day,在详解之前,我们先来一张他三的语法结构图:
year,month,day函数语法结构图
它们共性就是只有1个参数,这个参数官方的解释为serial_number:数字序列,其实就是日期。在Excel中,日期默认的格式支持以“-”或“/”为分隔符的数字序列,正确的格式为“2019/3/13”或“2019-3-13”,但如果你输入了“2019-3/3”或"2019/3-13"依然能识别为日期,哪如果作为函数的参数是否好用的呢?接下来我们就一起去验证一下吧。
函数测试数据的示意图
通过表格的数据可以看出,函数带入参数时有一定数据容错能力,不过这种能力也只限于日期格式符合规定的分隔符"/"和"-"内。日期除了分隔符,我们还需要注意数字的规则,每部分的数字除了满足相应的日期规则外,格式上的疏忽也能导致在参与计算时出错,比如我们使用拼接从身份证中提取的出生年月
=MID(G13,7,4)&"/"&MID(G13,11,2)&"/"&MID(G13,13,2)
结果为1952/08/07,实际上它却不是日期格式,如果我们负号转数字的方法将公式改为
=--( MID(G13,7,4)&"/"&MID(G13,11,2)&"/"&MID(G13,13,2))
而得到的结果就是数字而不是需要日期格式;如果你说可以通过右键设置的方法来显示为日期啦,虽然听着可行,实际操作有问题,我们设计制作的某个功能,总不能在最后一步需要自己设置一下格式来完成吧!通过上面的操作我们发现函数有容错功能,哪么问题来了,有没有可以将提取数字设置为日期的函数呢?哪就是我们后面要讲的DATE函数。
DATE函数
参数:3个必填参数,分别对应按年月日的顺序, 1参会作为年份, 2参会作为月份, 3参会识别为日期,
功能:通过输入指定的参数返回相应的日期
语法结构图如下:
DATE函数语法结构图
注意:
1. 参数YEAR范围:从1-9999,不符合日期的的规定的年份会直接与1900相加,而>=1900的则所见即所得。
2. 月份和日期并没有严格的限制,只要为>=0的整数,超出的月份或日期的日常值会通过日期规则计算出一个正确的日期。
了解完这些,我们再来看看上面的例是不是就很简单了,只需将公式改为=date(mid(g13,7,4),mid(g13,11,2),mid(g13,13,2))就能直接返回日期是不是很方便呢?通过date设置的日期,你就可以放心大胆在功能中使用,不用担心上面的问题发生,这也是为什么我经常使用它的原因之一。除了上面的函数经常用到外,我们还有一个常用的函数需要了解一下,就是今天的日期函数
今天函数:TODAY
参数:0
功能:返回系统的当前的日期
你要这么简单的函数我们有什么可讲的吗?当然我们不是讲它的功能,而是讲它的用法,它的用法常见于求合同的到期是否到期,是否为退休员工,项目是否逾期完成等,比如我们在计算实际年龄需要对比年月日,比如b2的数据为1952/8/7,我们通常会用=if(date(year(today),month(b2),day(b2))>today(),year(today())-year(b2),year(today())-year(b2)-1),如果不用if就可以修改为=year(today)-year(b2)-(month(b2)>month(today())-(month(b2)=month(today())*(day(b2)>day(today());哪么还有更简单的方法吗?当然有了,不过非本文的内容,我们下文分解!
如果你对我的文章有什么意见,欢迎下方留言指正,如果对你有些许帮助,欢迎你关注我,特别注释:本文是为想学Excel的小白准备,如果你是高手的,请略过!