周六的第5章内容主要聚焦于主生产计划MPS一维排程转换以及转换后如何根据此计划进行快速分解MRP。
今日第6章则聚焦于本报表的核心欠料运算。欠料的运算从大方向来说就是需求与库存的运算,欠料就是供需平衡中不能满足需求的部分。例如产品A需求100,就分解出100套子件需求,这些子件需求与库存运算,不能满足的部分就是欠料。

子件排序
在进行欠料计算前,需要把产品对应的子件进行排序,排序的目的就是为了进行约束条件配置,这里分别参与排序的列有子件编码,子件需求日期、子件的用量。
约束1:子件编码进行升序排序,把相同子件的放在一起
约束2:子件需求日期进行升序排序,把需求日期小的(前)进行优先扣减;
约束3:子件需求用量进行升序排序,把相同日期需求中用量小的进行优先扣减。
录入动态数组公式:
=SORT(TRIMRANGE(MPS分解输出!A2:Q300000),{8,6,9})

分开子件
进行欠料运算的字段有些是不需要的或者保留的意义不大,我们可以通过INDEX加序列的方式进行分列,只保留需求显示的核心运算列。如子件编码、子件库存、用量等;
=INDEX(SORT(TRIMRANGE(MPS分解输出!A2:Q300000),{8,6,9}),,9)

累计用量
接下来就需要计算的就是累计用量,也就是不同产品编码在不同排程日期中的累计需求量,因为库存量是从中库存明细表引用过来的,当子件编码重复的时候,引用的库存结果也是一样的,如果不用库存减去累计用量来计算,直接用库存减去用量就会出现库存多次扣减,出现逻辑错误。
录入累计用量的公式:
=SCAN(0,F2#,LAMBDA(X,Y,LET(A,OFFSET(Y,,1),IF(Y=OFFSET(Y,-1,),X+A,A))))

累计欠料
累计用量得到后,就可以用累计用量和库存的运算得到累计欠料数量,当运算结果小于0代表欠料,同时会根据上线的需求日期进行累计欠料的显示,如第1天欠-200、第2天欠-400,则分别代表第1欠-200、第2天欠-200;
录入动态数组公式:
=LET(A,J2#-H2#,IF(A>0,0,A))

未完待续……
