YonBIP高级版年度预算自动分摊到月的解决方案罗嘉1、问题描述和业务场景项目希望业务人员填写单据的时候,尽可能简化。比如填写预算明细时,只填写全年预算,但是在业务实施阶段按月进行累计控制。客户提供的样表如下:2、解决方案2.1.问题分析执行时间这个字段填写过于自由,如果将其拆成执行开始月份和执行结束月份,那么表样设计时,就能尝试用excel公式实现。执行开始日期和直接结束日期需要有标准的格式,使后续容易判断进行分摊。此外有些情况下,预算金额是无法自动平均分摊的,比如预算金额1000元,在3个月平均分摊无法做到平均分配。那么这种情况下,差额应该分配给最后一个月。为避免填写错误(比如结束月份比开始月份小),还可以设置审核进行判断。2.2.解决方案1.设计表样设置表样,将执行时间分解成“执行开始月份”、“执行结束月份”。增加1-12月列用语分摊年预算。单元格都是万元区,所以设置了保留四位小数,显示到元。因为小数位很多,为保证金额格式一致,设置了靠右对齐。以一月为例,表样上的公式为:=IF(AND(S$209>=$M215,S$209<$N215),ROUND($K215/($N215-$M215+1),0),IF(AND(S$209=$N215,$N215>=$M215),$K215-ROUND($K215/($N215-$M215+1),0)*($N215-$M215),0))意思是:首先判断当前单元格是否在开始和结束月范围内,赋值为一个平均值(该表是万元表,精度到元,所以四舍五入的小数位是0)。再判断当月单元格是否是最后一个月,赋值为年预算总数和之前月份的差额。2.设置月份的枚举范围设置“执行开始月份”、“执行结束月份”的枚举项目,规范填写。3.设置校验公式设置校验公式,判断该行填写是否存在问题。=IF(OR(I215="",K215="",M215="",N215=""),"FHJK列存在未填写项目",IF(M215>N215,"执行开始月份大于结束月份",IF(K215<>SUM(S215:AD215),"年预算不等于月预算合计,请重新保存",IF(OR(O215="",P215=""),"LM列存在未填写项目","检验正常"))))设置了一列专门进行填写校验,显示校验不通过的原因。不仅仅对分摊的总金额做了校验,也对填写过程中一些容易出现的错误进行了提醒。并且根据项目的填写顺序和重要性,进行了前后排序。设置完成后,隐藏用于判断的月份行。4.效果展示效果展示如下,实现了年度预算自动分解到月的需求,差额分摊到最后一个月。如果月份填写错误,那么会进行提示,并且不会做月度预算的分解。3、注意事项1.因为项目是按年进行预算的,会人为的将预算拆成两部分分别填写,所以没有考虑跨年进行分摊的情况。2.执行开始月份、执行结束月份需要填写:01、02---12,因为后续是按照字符对比大小的,如果使用的是1,2,3---12,需要考虑转成数值对比。3.如果需要每个月预算金额可以进行调整,那么可以重新增加1-12月列,设置业务规则取excel公式单元格,并将excel公式列隐藏掉。