二维码 购物车
部落窝在线教育欢迎您!

构建计算有效期天数的EXCEL公式,只需几个步骤!

 

作者:阿硕来源:部落窝教育发布时间:2021-04-12 11:28:28点击:15305

分享到:
0
收藏    收藏人气:0人
版权说明: 原创作品,禁止转载。

编按:

日常工作中,我们必然会遇到各种日期问题,需要对它进行查找、计算……今天,小E给大家介绍的就是计算有效期天数的方法!从简单到较难的三个不同问题,全面为大家解构公式的组成和应用!

 

EXCEL中,日期的本质是数值,所以一般情况下,在计算有效期的时候,只要适当地运用日期函数,基本上都能够得出预期的结果。可是,当遇到某些奇葩的有效期计算要求的时候,就要多杀死一些脑细胞了。

 

小张就职于一家宠物食品公司,对宠物食品的保质期有严格的要求。小张的日常工作之一就是对保质期进行计算和管理。

 

最简单的日期计算

 

原本呢,公司生产的宠物食品的保质期,规定为70天。所以,要计算70天有效期的话,只需将生产日期加上70就可以了,这对于小张来说,是个小case

操作:在B2中输入“=A2+70”,用鼠标向下复制填充即可。

 

 

不难的日期计算

 

没过多久,公司出了新的规定,规定保质期为2个月零10天。这种情况下的有效期计算也在小张的射程范围之内——先用EDATE函数求得两个月之后的日期,然后再加10,就行了。

操作:在B2中输入“=EDATE(A2,2)+10”,用鼠标向下复制填充即可。

 

 

难度升级的日期计算

 

近日,公司又出了更奇葩的规定——将保质期定为2个月零10天的同时,要求有效期的最后一位数字与生产日期最后一位数字保持一致!这下,情况就变得复杂了。

 

问题分析:

这里面会涉及到每月天数、闰年和平年2月份天数不同的问题,甚至涉及到平年跨到平年、平年跨到闰年等多种状况。以20191220日为例,向后推移2个月,应为2020220日,2020220日之后的第一个尾数为0的日期是2020310日。

 

在公司的这种规定下,天数差就不再是一个有明确规律的数字了,最低天数差值为69天,而最高的天数差值则高达81天:

 

 

小张一筹莫展,这真的是难死“宝宝”了。

 

思路:

通过上面对于天数差值的分析,大家可以看出,有效期与生产日期之间的天数差值范围,在69天至81天之间。先将生产日期往后推69天至81天的天数构成一个数组,然后再在这个数组中,把第一个与生产日期天数的最后一位数字一致的天数匹配出来。用数组来解决这个问题。

 

操作:

B2中的输入:=INDEX(A2+ROW($69:$82),MATCH(0,MOD(DAY(A2+ROW($69:$81))-DAY(A2),10),0)),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

 

这样,就完美的计算出了对应的有效期!

 

函数分析:

INDEX+MATCH函数是Excel中的经典组合,先用MATCH函数匹配到符合条件的数据的位置,再通过INDEX函数返回数组(或区域)中这个位置对应的值。

 

公式看起来很长,其实理解起来很简单!下面,笔者就为大家一一剖析构成这个公式的步骤:

 

1步:构造日期数组

 

B2中输入公式如下:=A2+ROW($69:$81) ,按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

通过F9键,可以查看B2中的计算结果,如下:

={44286;44287;44288;44289;44290;44291;44292;44293;44294;44295;44296;44297;44298}

 

 

其中显示的是日期对应的数值,不太容易看清楚效果。

 

补充检测小技巧:

大家可以增加一列辅助列,利用TEXT函数将数值改成日期显示。

C2中输入公式:=TEXT(A2+ROW($69:$81),"yyyy-m-d"),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

通过F9键,可以查看C2中的计算结果,如下:

={"2021-3-31";"2021-4-1";"2021-4-2";"2021-4-3";"2021-4-4";"2021-4-5";"2021-4-6";"2021-4-7";"2021-4-8";"2021-4-9";"2021-4-10";"2021-4-11";"2021-4-12"}

 

 

【注:TEXT函数在后续的计算中,用不到它。】

 

可以看到,在构造出的数组中,天数尾数为1的有3个,分别为2021331日、202141日、2021411日,这些天数的尾数都与2021121日的天数尾数一致。

 

2步:构建天数数组

 

通过DAY函数将构造出的日期数组中的每一个日期的天数提取出来,构成一个新的数组。

B2中的公式扩展为:=DAY(A2+ROW($69:$81)),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

通过F9键,可以查看B2中的计算结果,如下:

={31;1;2;3;4;5;6;7;8;9;10;11;12}

 

 

3步:构建天数差值数组

 

将天数数组中的天数与生产日期中的天数相减,以求得天数差值。

B2中的函数第二次扩展为:=DAY(A2+ROW($69:$81))-DAY(A2),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

通过F9键,可以查看B2中的计算结果,如下:

={10;-20;-19;-18;-17;-16;-15;-14;-13;-12;-11;-10;-9}

 

 

肉眼观察即知,与2021121日的日期尾数相同的天数与2021121日的天数差为102021331日),-20202141日),-102021411日),在天数差值数组中,第一个天数差值为10的整数倍的数据,就对应着日期数组中的第一个满足条件的日期。

 

4步:构建余数数组

 

思路:

由于满足条件的天数差值为10-2020,它们的一致规律就是除以10后求余数,均为0。从而,我们可以得出这样结论:第一个为余数为0的数据,也对应着日期数组中的第一个满足条件的日期。

 

B2中的函数修改为:=MOD(DAY(A2+ROW($69:$81))-DAY(A2),10),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

通过F9键,可以查看B2中的计算结果,如下:

={0;0;1;2;3;4;5;6;7;8;9;0;1}

 

 

5步:通过MATCH函数,进行匹配

 

通过MATCH函数,在余数数组中,匹配第一次出现0的位置。

B2中的函数修改为:=MATCH(0,MOD(DAY(A2+ROW($69:$81))-DAY(A2),10),0),按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

通过F9键,可以查看B2中的计算结果,为1。(注:B2单元格中显示为1900/1/1,在函数栏中通过F9键查看,显示结果为1。)

 

 

至此,在构建的日期数组中,第一个满足条件的日期出现在第1个位置,大家再用INDEX函数去日期值数组中,返回第1个日期值,就OK了。

 

6步:通过INDEX+MATCH函数组合,完成日期匹配

 

B2中的公式得到最终的完善,得到最开始的公式:=INDEX(A2+ROW($69:$82),MATCH(0,MOD(DAY(A2+ROW($69:$81))-DAY(A2),10),0))。最后,与上述步骤一致,按Ctrl+Shift+回车键后,用鼠标将公式向下复制填充。

 

这样,令小张头疼已久的有效期问题就解决了。

 

亲爱的小伙伴,本文中问题的涉及到数组、MOD函数、MATCH函数、INDEX函数等综合应用,请务必多次练习,从而明白其中的奥义哦!

 

本文配套的练习课件请加入QQ群:902294808下载。

Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

到期日计算,EDATE甩DATE函数两条街!

自动提醒产品还有多少天过期的5种Excel方法

玩转excel日期函数,一文看懂90%的日期运算

9条最实用的计算excel中关于日期的公式!(建议收藏)

版权申明:

本文作者阿硕;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。