原始需求:一张表单,近100个条目,已知金额、计息起止时间,求各条目在该时间段内按人行同期和LPR利率计算的利息。 之前做过《引用人民银行同期贷款利率(基准利率)和LPR利率的利息计算器》,多个表单协同作用,可实现一项借贷的利息计算。故原理上讲,这个需求是可以实现的。不同的地方在于,这次需要同时计算近100项,不可能再用多个表单交互引用,需要更加简洁有效的方法。 难点分析:
利率引用——对人行同期和LPR,一次调整期为一行,计息时间段不同,引用的利息的调整期的开始的单元格和行数也不同;计息起止时间——借贷起止时间跟利息调整时间几乎双随机,计息时需要在大的利息调整周期内“掐头去尾”,或者在小的调整周期基础上加上首尾“零头”;利息计算——按常规思路,需计算每一个调整期内的时间(不规律)、引用当期的利率,得到每一期的利息,再求和,得该条目的总利息;利息计算通用公式——需要同时实现多项借贷的利息计算,相当于同一个模型,输入多个参数,输出多个参数。这里把人行同期和LPR放在了同一个表内,方便后续引用。因为人行同期分五档,LPR分两档,为了不用单独处理,此处把LPR还是按五档输入。
注:前四挡LPR利率相同,可选中单元格后,在公式栏输入数字,按ctrl+enter,可实现快速输入。
(更正:金额×天数×综合利息/360,因综合利息计算的是年利息,此处按天数算,需要换算为日利息。截图仍为旧版,未更新。2020/9/18注。)
根据前面的分析,综合利率即在该时间段里加权平均的利率,以第一行数据为例,分析如下:
开始时间为2012/1/1,查找利率表,应引用生效时间-起为2011/7/7(R35)的利率,根据档位,得7.05%;截止时间为2019/12/4,查找利率表,应引用生效时间-止为2019/12/19(R47)的利率,根据档位,得4.08%;先计算大范围、即2011/7/7-2019/12/19期间的各期利率×各期天数,再减去2011/7/7-2011/12/31、2019/12/5-2019/12/19收尾两段的利率×天数,最后除以总天数,即得该时间段内的综合利率(数学问题,可以公式稍稍推导,帮助理解);各期利率×各期天数的结果输出在同一个单元格,想到用数组公式,最为简单高效,也是本次工作的亮点所在(个人感受,数组公式需要一定的基础才能理解,在二维的单元格里展开了三维的世界,神奇&强大&有趣)。 具体公式展示如下:因为之前做了《引用人民银行同期贷款利率(基准利率)和LPR利率的利息计算器》,以为升级一下很简单。后来发现,因为对数组的认识还不够深,还是走了不少弯路。 但是最后做成了,还是很开心的。 因为【Excel】多元一次方程组求解计算器的经验,一开始是想到了综合利率的公式用offset。后来尝试过程,又主要放在了index+match,走了不少弯路。放一张截图,作个纪念。 这次之后,感觉自己能独立应用数组公式了。之前只是知道有这么回事,或者跟着别人的思路依葫芦画瓢。现在可以宣布,我也会用数组啦(当然可能只是管中窥豹)。
【原创内容,引用请注明出处:https://blog.csdn.net/truly121314/article/details/108391302】