天天看点

mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间

原创申明

本文原创作者为刘诚燃,欢迎转发,谢绝转载。群友一直想让笔者教大家如何写一些excle公式以辅助填报1104台账。像sumifs,vlookup这些常用公式我想大家一定并不陌生,今天就教一个更很简单又非常适用的公式。

mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间

1104报表中,剩余期限计算是一件很让人头大的问题,比如,G21里91日至1年,这1年到底是360天,还是1年?还有G33报表里,1.5年到底是多少天?G18里是含下不含上,其他报表又是含上不含下?如何利用2个日期直接得出剩余期限?本文一一归纳整理,是一个非常有用的实用贴。

一、G21中一年到底是如何区分的?

笔者在1104企业微信群里先做了一个调研,结果发现G21关于1年还真是差别挺大的,有的是按360天,有的是对年对月对日,有的是365天,如果再设个366天估计也会有人填。

mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间

的确,G21填报说明里没有明说,但我们可以通过后面关于活期存款的案例来做一个推断G21里的1年实际是指360天。

本行的F列[1年至5年]根据过去12个月最低的活期存款额填报,反映活期存款中较为稳定的部分;A-E列为自动计算项目,反映其余部分的活期存款平均列入一年以内的各剩余期限区间的情况(以各时间段期限占比进行分配)。例如,某银行在2009年3月底的活期存款(不含财政性存款)为150亿元,在过去12个月中最低活期存款额(不含财政性存款)是80亿元,那么该银行3月末活期存款(不含财政性存款)中较为稳定的部分就是80亿元,应在“一年以上”项目下填入80亿元;其余部分即(150-80)亿元,要平均列入一年以内的各剩余期限内(以各时间段期限占比进行分配),如在“2日至7日”项目下应填入((150-80)/360)*(7-2+1)亿元。

G21可以统计次日、2日至7日、8日至30日、31日至90日、91日至1年、1年至5年、5年至10年、10年以上各个时段的流动性缺口和流动性缺口率。报表虽然体现的是各个时段,银行自身在算缺口率时应该精确到每一日。系统不支持的话,做流动性管理的司库至少手工要能算出1年内每一日的流动性缺口情况。

在统计逾期时间段我们经常用到也是30天、60天、90天、180天、270天和360天这些时段,所以360天是一个非常重要的时间节点。我们在计算利息时1年换算成日利率也是用的是360天。

二、G0104中原始期限1年是多少天?

G0104中,存款或贷款的原始期限包括活期、三个月以内、三个月至六个月、六个月至一年、一年至两年、两年至三年、三年至五年、五年以上、逾期这几种分类方式。

本表中时间划分区间均为含上限时间,不含下限时间。如“一年至两年”则为含两年不含一年。月、年均按自然月年统计。实际统计时,应按存贷款原始(合同)期限分类填列,

总结而言就是含上不含下,如果正好是1年则六个月至一年这个时段内。按照对年对月对日的原则,一年纠结是多少天呢?

答案是可能是365天也可能是366天。比如2018年11月24日发放的一年期贷款,到期日为2019年11月24日,两个日期直接相减,得到的是365天。如果2019年11月24日发放的一年期贷款,到期日为2020年11月24日,两个日期直接相减得到的却又是366天。因为2020年是闰年,2月有29号。

那么如果是2020年2月29日发放的1年期贷款,到期日是哪一天呢?2021年没有2月29日,年和月对上了,日对不上,就要往后推1天,也就是2022年3月1日才是1年。两个日期相减依然是366天。

三、G3301中剩余期限1.5年是怎么统计的?

如果我们知道除G21中1年是指360天外,其他报表剩余期限1年或n年都是对年对月对日的话,那么就可以得出G3301中剩余期限1.5年实际是指1年零6个月,依然是对年对月对日。

比如,2019年6月30日统计剩余期限区间为1年-1.5年(含)的贷款,2020年12月30日正好是1.5年,落在这一区间之中,2020年12月31日则要统计到1.5年-2年(含)这一区间了。

四、先算剩余天数,再算剩余期限

开始这一问题也让我困扰了很久,首先想到的是2个日期相减得到剩余天数,然后用if嵌套公式来计算。

=IF(T5<0,"未定期限",IF(AND(T5>=0,T5<=1),"次日",IF(AND(T5>1,T5<=7),"2日至7日",IF(AND(T5>7,T5<=30),"8日至30日",IF(AND(T5>30,T5<=90),"31日至90日",IF(AND(T5>90,T5<=360),"91日至1年",IF(AND(T5>360,T5<=1826),"1年至5年",IF(AND(T5>1826,T5<=3652),"5年至10年",IF(T5>3652,"10年以上")))))))))

注T5是两个日期直接相减

但这么算无法避开闰年的问题,比如剩余期限10年,在不同的时间点计算,可能是3652天(中间有2个闰年),也可能是3653天(中间有3个闰年)。

这样算出来的,对年对月对日可能对不上,比如2019年6月30日至2029年6月30日相差3653天,2020年6月30日至2030年6月30日则是相差3652天。这个公式在剩余期限每期都要做一些更新,而且在计算原始期限根本就没法用。

五、直接用2个日期相减的excle公式

万能的Excel肯定是有办法的,我记得有个函数是可以计算2个日期间相差多少年、多少月、多少日的。

对,就是DATEDIF函数,DATEDIF(A,B,“d”)计算的是2个日期间的天数差;DATEDIF(A,B,“m”)计算的是2个日期间的月数差;DATEDIF(A,B,“y”)计算的是2个日期间的年数差;DATEDIF(A,B,“md”)计算的是2个日期间的日的差;DATEDIF(A,B,“ym”)计算的是2个日期间的月的差。

我们用后面3个函数先构建2个日期间相差多少年多少月多少日,对年对月对日就是1年0月0日就对上了,整好1年。

用公式去试验2020年2月29日至2020年2月28日是11个月30天,不到1年;到2021年3月1日才是1年。

我们再插入1列,对计算出来的年、月、日3列做一些技术性处理,年×1+月×0.01+日×0.0001,这样如果算出来是1,就是正好1年,算出来是1.06,就是1.5年。

这时候我们相当于在excel中增加了3列,但输入2个日期还是得不到剩余期限啊?这时候我们就想到是否可以用match函数来做排序,设置一些关键性节点,再用choose函数来设定对应值,以确保2个日期直接相减落在对应区间内。

比如在G0104中,我们做了一个这样的函数。

=CHOOSE(MATCH(J2,{10000,1000,5,3,2,1,0.06,0.03,0.00009},-1),"活期","五年以上","三年至五年","两年至三年","一年至两年","六个月至一年","三个月至六个月","三个月以内","逾期")

因为是含上不含下,所以要做降序排列,Match_type取-1。如果是G18中含下不含上,则要做升序排序,Match_type取1。

Match_type:1 或省略,表示MATCH 函数会查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须按升序排列,例如:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。

Choose函数,其作用是在EXCEL中choose函数从参数列表中选择并返回一个值。这时候返回值就可以把计算出来的剩余天数固定在某一区间了。

注意5年以上我们使用的阈值是1000,此外我们还设置了一个活期的阈值10000,这时候要把活期存贷款的到期日调整为9999-01-01。1万年后,银行还在么。。。。

同时还设置了0.00009这个逾期的阈值,比如到期日正好在报告日,还没有归还的贷款实际就已经逾期了。小于0.0001,或者为负数的就是逾期贷款。

mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间

最后我们省略中间步骤,把间接公式合并成一个直接公式,就可以用2个日期相减直接得到剩余期限的区间了。

=CHOOSE(MATCH((DATEDIF(D2,E2,"Y")+DATEDIF(D2,E2,"YM")*0.01+DATEDIF(D2,E2,"MD")*0.0001),{10000,1000,5,3,2,1,0.06,0.03,0.00009},-1),"活期","五年以上","三年至五年","两年至三年","一年至两年","六个月至一年","三个月至六个月","三个月以内","逾期")

是不是很简单的一个公式。要注意的是不同报表剩余期限各种各样。因此还是要多做几套公式,尤其是在G21里面有2个不同的剩余日期判断方法。1年按360天,2年则又是对年对月对日,所以要先用if判断剩余期限是否超过360天,是的话就用上面公式,不是的话则用2个日期相减的天数来判断。

=IF((E3-D3)>360,CHOOSE(MATCH((DATEDIF(D3,E3,"Y")

+DATEDIF(D3,E3,"YM")*0.01+DATEDIF(D3,E3,"MD")*0.0001),{10000,10,5},-1),"10年以上","5年至10年","1年至5年"),CHOOSE(MATCH((E3-D3),{360,90,30,7,1,0},-1),"91日至1年","31日至90日","8日至30日","2日至7日","次日","逾期"))

公式还是写不好,那就加入下面的1104交流群吧,附不同报表剩余期限计算公式。

mysql中日期相减_1104绝密公式,如何直接用2个日期直接算剩余时间区间

加入1104全国交流群

1104爱好者4000+的社群

需下载【企业微信】APP