分享一下PMC(Production Management Control)的日常工作场景:今日,古老师将解析一个较为复杂的物料控制需求实例。如下所示的表1,包含了某工厂的MPS(Master Production Schedule)主生产计划。该计划对生产任务的排程作出了明确的规定,以生产任务“WK-004”为例,其需生产总量为500件,计划每日完成100PCS,故预计整个生产过程将在5日内完成。
由于所生产产品中部分零部件体积较大,导致必须按照天数严格管控进料流程。因此,MC物控员需要对该生产任务的物料需求进行逐日拆解,精确计算出每一天所需各零部件的具体数量。
然而,系统中的工单并未对此情况进行细分,而是以整单形式呈现,如上述提及的WK-004生产任务。此任务的零件需求设定为一次性发放500套完整物料,而非按照MPS主生产计划中每天100件的进度进行拆分。加之这500套零部件中,部分已领取,部分尚未领取,这种混乱状态使得按照天数精确计算物料需求变得颇具挑战。
此,有必要设计一款全自动化的WPS表格模板,该模板能依据主生产计划MPS及生产任务的实际领料明细,自动生成按天划分的物料需求计划。此举旨在显著减轻MC物料控制员的工作压力。
需求分析在接收到这一需求后,我们随即展开需求分析。实现依据MPS生产计划自动生成按日细分的物料需求计划的关键难点在于:准确判定每项生产任务被分配到的具体生产天数,继而根据每日排程的物料数量,合理确定各工单任务的分配比例。
具备了每日的分配比例之后,我们可将各生产任务尚未领用的零部件明细数量乘以该比例,从而得出按日分配的零部件精确数量。最终,结合MPS所提供的排程日期,即可将这些零部件量精确对应到具体的每一天。
表格转换MPS主生产计划采用二维报表格式呈现,这在进行生产任务数量比例分配时略显不便。因此,我们首先需要将其转化为一维报表。为此,我们输入以下公式实现数据转换:
=LAMBDA(区域,垂直,水平,LET(Q,区域,C,垂直,H,水平,HSTACK(TOCOL(IF(区域="",NA(),垂直),3),TOCOL(区域,3),TOCOL(IF(区域="",NA(),水平),3))))(D3:J4,B3:B4,D2:J2)
效果如下图所示:
确定比例成功将MPS主生产计划转化为一维报表后,我们便能够计算出每天排程数量占所排定生产任务总量的比例。只需将每日排程数量除以生产任务总数量,即可得出相应比例。
录入以下公式:
=C7:C14/XLOOKUP(B7:B14,B3:B4,C3:C4)
效果如下图所示:
确定天数比例确定之后,接下来的任务是明确每项生产任务的具体排程天数。此处的判断逻辑为:生产任务被分配的次数即为其排程天数,可通过统计生产任务在报表中的重复出现次数来确定实际天数。
录入以下公式:
=COUNTIFS(B7:B14,B7:B14)
效果如下图:
重复次数查阅生产任务领料明细表时,会发现该表尚未进行拆分。以任务WK-004为例,其零部件明细仍显示为总计500套。依据上述计算所得的排程天数(如5天),我们需要将该零部件明细复制并重复5次,以此构建出满足按日领料需求的明细列表。
录入公式:
=XLOOKUP(B3:B69,'1.MPS'!B7:B14,'1.MPS'!F7#)
效果如下图所示:
重复任务在获得所需的重复次数后,我们可根据此数值将生产任务复制相应的次数,并将结果垂直堆叠成一列。请参考以下公式进行操作:
=DROP(REDUCE("",B2:H2,LAMBDA(X,Y,HSTACK(X,LAMBDA(A,B,TEXTSPLIT(CONCAT(REPT(A&"#",B)),,"#",2))(OFFSET(Y,1,,67),I3#)))),,1)
效果如下图:
匹配排程先前已将领料明细按照与主计划MPS相符的排程天数进行了相应次数的复制。此刻,仅需将MPS中的排程数量、排程日期及排程比例数据引用过来,即可迅速生成各个零部件的具体领料明细。
录入以下函数:
=DROP(REDUCE("",B3:B69,LAMBDA(X,Y,VSTACK(X,FILTER('1.MPS'!C7:E14,'1.MPS'!B7:B14=Y)))),1)
效果如下图所示:
合并转换借助于上述构建的标准一维数据表,通过对其中数据进行适当的合并与转换操作,我们能够极其便捷地得出各零部件每日的需求明细。录入以下函数:
子件:=UNIQUE(N3:N275)
日期:=TOROW(UNIQUE(S3:S275))
汇总:=SUMIFS(U:U,N:N,W3#,S:S,X2#)
调整列宽,加上边框,把0隐藏,效果如下:
通过上述的转换,轻松实现物料需求的精准统计。
图文看不明白,工作日晚上:20:00-20:30
抖音关注 “古哥计划”,古老师直播讲解
和古哥一起学习PMC生产计划运营,一辈子够不够?