打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel小白讲函数-日期函数不能被忽视的函数DATEDIF

前一文最后提到有没有函数能简化年龄,工龄等计算呢?它就是我们今天要说的隐藏函数datedif,为什么说它被隐藏呢?它不像其它的函数一样,有解释说明,在插入函数中搜索也搜索不到,但你是可以实实在在的使用的,现在和我一起看看被雪藏的函数有什么功能吧!

DATEDIF函数 

推荐掌握等级:★★★★★

语法结构图:

DATEDIF函数语法结构图

必填参数:start_date(开始日期),end_date(结束日期),unit(功能编码)

start_date end_date:分别的开始日期,结束日期,必须满足条件end_date>=start_date,否则会返回错误值#NUM!;

Unit:功能编码,共分两组,一组是:“Y”,”M”,”D”:

Y:功能返回时间整年的数字

原理:比如=datedif(2015/3/3,2017/3/2,”Y”)结果为1,用数学表达式表示=floor((2017/3/2-2015/3/3)/365,0)公式含义就是对除以365以后取整运算,这个数学表达式只适合短期的年数10以内计算,如果计算年龄20年会导致4-5天的误差,计算的间隔越长,误差就越大,而用函数就不会有这样的问题,而且不用你会复杂的计算公式,是不是就冲这个我们也得必须记住Y呢?什么计算周岁,工龄等都不在话下,遇到这样的问题,你就可以去尝试一下!

M:功能返回时间间隔上的整月数

原理:(year(end_date)-year(start_date))*12+month(end_date)-month(start_date),

原理是不是挺简单的,对于屏幕前的你来说,是不是么有难度!不过, datedif函数把这个公式简化成一个参数搞定,是不是有点小厉害啊!当我们遇到以以计算月份为主的时候,一定要记得用datedif函数中”Y”啊,它主要的用于银行的计算月息的存款的利息,你也可以计算房贷10年或20年,每个月还多少?遇到这些问题,是不是都能迎刃而解呢?

D:功能返回时间间隔的天数

原理:日期本来就是某个日期距离1900年1月0日的天数,所以求天数直接相减就ok啦!

,计算公式为end_date-start_date,至于你用数学公式还是函数就看个人喜好了,

另一组: “YM”,”MD”,”YD”:

YM:学名月差,Y表示在一年的范围内,M表示月份,YM表示1年的范围内,2个日期的月份差是多少?这个功能会而忽略start_date的年份,返回结果范围为0-11:

原理:如果month(end_date)>=month(start_date) 则直接返回相减

如果month(end_date)<month(start_date)则month(end_date)+12-month(start_date)

如果用if表达式来编写公式=if(month(end_date)<month(start_date),month(end_date)-month(start_date)+12,month(end_date)-month(start_date))

通过上面的公式提取出共同的部分,主要的影响公式的结果为当month(end_date)<month(start_date)会在结果上加上12,我们就可以将公式直接写成

=month(end_date)-month(start_date)+(month(end_date)<month(start_date))*12,即便我们能简化也还是需要这么长的公式来完成功能,而用函数只需=datedif(start_date,end_date,”ym”)就Ok了

MD:学名月日差,M表示以月为范围,求两个日期的差多少天,这次会忽略start_date的年,月,结果的范围为0-30

原理:比较日期的日主要分以下两种情况:

如果day(end_date)>=day(start_date),则结果为day(end_date)-day(start_date);

如果day(end_date)<day(start_date),则结果为:end_date-date(year(end_date),month(end_date)-1,day(start_date));

这个功能单独的用途并不大,如果计算工龄的时候,要求你精确到天的话,你就可以使用这个功能将结果精确化。

YD:学名年日差,Y以年为范围,计算两个日期的间隔天数,这次忽略的是start_date的年份,取值范围为0-365;

原理:以月基础条件进行划分的话可以分为三种情况:

第一种:如果month(end_date) =month(start_date),分两种情况:1.如果day(end_date)>=(start_date) 结果为:end_date – date(year(end_start),month(start_date),day(start_date)),否则end_date –date(year(end_start)-1,month(start_date),day(start_date);

第二种:如果month(end_date)<month(start_date)则:end_date-date(year(end_start)-1,month(start_date),day(start_date));

第三种:如果month(end_date)>month(start_date)则end_date –date(year(end_start),month(start_date),day(start_date));看的有点懵啊,没有事有图:

datedif函数功能“YD”的逻辑结构图

眼尖的你是不是通过逻辑结构图发现,如果不按月份为基础条件划分而是按日为基础条件划分,写出来的公式就会比上面的思路少一个if函数啊!如果你以后遇到逻辑思路上的问题,建议尝试通过画流程图和逻辑图来搞定复杂的逻辑。

至于将上面的逻辑转化为公式,有兴趣的朋友可以自己试试,如果你能写出来就说明你对日期和if函数掌握的足够透彻了,如果写不出来也没有关系,我们只需了解到YD的功能含义就行了,以后这个复杂的问题就可以交给datedif函数来解决了!

说到这里dateif函数就告一段落了,希望给你的学习和工作上有所帮助,也希望把你遇到的问题告诉我,我看到后会第一时间回复

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
excel年月日加减的例子和公式原理剖析
计算年龄和工龄的函数
独特角度,全面剖析Excel隐藏函数DATEDIF功能
在excel中计算日期差工龄生日等
利用Excel函数来完成计算两个日期之间的天数、时间差
datedif函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服