ad

实战之路《Excel 数据处理与分析实战宝典_第2版》_9.5 隐藏 DATEDIF 函数

网友投稿 107 2023-11-13

【摘要】 本书摘自《Excel 数据处理与分析实战宝典_第2版》一书中第9章,第5节,耿勇著。

9.5 隐藏 DATEDIF 函数

在 Excel 中有一个名称为 DATEDIF 的函数,它是很多数据处理者所不知道的函数。这是 Excel 中的一个隐藏函数,读者可以直接输入使用。它对于计算两个日期之间间隔的天数(月数、年数) 非常有用,可广泛用于工龄工资、存货倒计时管理、分期摊销、应收账款账龄的计算等方面。下 面简单介绍一下该函数的语法。

实战之路《Excel 数据处理与分析实战宝典_第2版》_9.5  隐藏 DATEDIF 函数

语法: DATEDIF(start_date,end_date,unit )

★第1个参数 start_date: 起始时间。

★第2个参数 end_date: 结束时间。

★ 第3个参数 unit: 函数返回的类型。

参数1和参数2可以是具体的时间,也可以是其他函数的结果。

参数3: unit 为返回结果的代码,具体代码如下:

★“y”返回整年数。

★“m”返回整月数。

★“d” 返回整天数。

★“md”返回参数1和参数2的天数之差,忽略年和月。

★“ym”返回参数1和参数2的月数之差,忽略年和日。

★“yd”返回参数1和参数2的天数之差,忽略年。按照月、日计算天数。

下面以工龄工资计算为例来说明该函数的用法。例如,某公司规定,工作满一年的员工可开 始计算工龄工资;对于不在起薪日当日入职的员工, 一般规定以入职当月的次月的起薪日起开始计算工龄。例如某公司规定每月1日为计算工龄的起薪日,工龄工资标准为50元,即工龄工资= 工龄(年数)×50,工龄超过15年的以15年为限计算工龄工资(即工龄工资是封顶的)。在2016 年6月初计算5月工资时,起薪日就是2016-5-1。

在 E2 单元格中定义的公式如下:

=DATEDIF(C2,D2,"Y")

在 F2 单元格中定义的公式如下:

=DATEDIF(C2,D2,"M")

在 G2 单元格中定义的公式如下:

=MIN(50*DATEDIF(C2,D2,"Y"),50*15)

从E 列的结果可见,该函数计算出来的结果都是0或自然数,不会出现小数。

但是这个函数本身存在一些先天性的缺陷,计算两个日期之间间隔的月数和年数时会出现一 些错误。

从第7行的开始日期和结束日期来看,2017/1/29和2017/2/28 应该是整整间隔一个月,但 D

列间隔月数的计算结果却为0。

从第6~9行的数据我们可以看出,问题都出在月底方面。DATEDIF 函数只关注了日期的天

信息,忽视了对月底信息的判断,开始日期的日数都大于结束日期的日数。

日期数据的本质是数字序列值, 一天对应整数1,因此如果某个日期数据+1 成为某月的1号,那么这个日期就是月末。如果两个日期都为月底,那么两个日期都变成各自下一个月的1号, 也能正常地返回间隔月份。

故在E2 单元格中定义公式:

=DATEDTF (IF(DAY(A2+1)=1,A2+1,A2),IF(DAY(B2+1)=1,B2+1,B2),"M") 以上计算公式完美地解决了这个函数的先天性缺陷。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实战之路《Excel 数据处理与分析实战宝典_第2版》_8.7.2 编制工作表目录
下一篇:打开《Python 可视化数据分析》_学会挖掘大数据的价值_3.4.1 Python 中的面向对象思想
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×