530自动化生产计划:动态数组公式在MPS排程中的创新实践与优化

职场计划有古哥 2024-10-02 04:26:59

全文约2507字;

阅读时间:约7分钟;

听完时间:约12分钟;

在编制生产计划的过程中,生产计划员通常需要安排多条生产线的调度。这涉及到计算每条生产线具体的开工时间和预计完工时间。进行这些计算时,关键因素包括:生产线的数量、统一规定的开工时间以及各个产品对应的标准工时。基于上述信息,可以利用特定公式快速准确地确定每条生产线的开工和完工时间。

整体思路

在确定了统一的开工日期(9月30日)之后,接下来需要单独计算每条生产线的具体开工时间和完工时间。这一过程的核心步骤是首先识别出每条生产线上安排的产品。一旦明确了这些产品,就可以根据它们各自的标准工时来计算总的所需工时,并将这个总工时转换为“天”的形式,以便与9月30日这一基准日期进行运算。

例如,如果计算得出某条生产线所需的总工时换算成0.8天,则从9月30日起加上这0.8天即可得到该生产线的预计完工时间。值得注意的是,在连续的任务安排中,一个任务的完成时间即为下一个任务的开始时间。

为了实现上述目标,可以通过以下步骤操作:

筛选每条生产线上的产品。

根据筛选出的产品及其标准工时累加总工时。

将累计工时转换为以“天”为单位的形式。

使用垂直堆叠函数处理所有生产线的开工时间数据。

从上一步骤的结果中移除最后一行的数据后,将其余部分与相应的开工时间相加,从而得到每条生产线的实际完工时间。

整个流程可以概括为:筛选产品 -> 累计工时 -> 转换天数 -> 计算开工时间 -> 计算完工时间。

筛选线体

如果采用传统的公式方法,上述流程其实可以大大简化。但为了实现完全动态化的数组处理,这里采取了一系列较为复杂的步骤来设计表格。首先,我们需要筛选出特定线体对应的标准工时。为便于理解,下面将分步展示如何编写相关公式。

=FILTER(M5#,G5#="1#")

公式解释:

参数1(数组): M5# 表示每张生产任务所需的标准工时。

参数2(条件): G5# 代表每张生产任务对应的生产线编号;在此处我们设定条件为 "1#",意味着只选择那些属于第一生产线的生产任务的标准工时数据。

通过这种方式,我们可以轻松地获取到指定生产线上的所有相关标准工时信息,为进一步计算开工时间和完工时间打下基础。

累计天数

第二步是将筛选出的工时进行累加。在累加之前,需要先将这些工时转换为天数格式。由于只上白班(即每天工作12小时),我们将标准工时除以12来完成单位转换。然后,使用SCAN函数对转换后的数据进行累计求和。以下是具体的公式:

=SCAN(0,FILTER(M5#,G5#="1#")/12,SUM)

公式解释:

参数1(初始值): 0,作为累加的起始值。

参数2(数组): FILTER(M5#, G5#="1#")/12,这里首先通过FILTER函数筛选出第一生产线的所有生产任务的标准工时,然后将每个工时除以12转换为天数。

参数3(累加函数): SUM。每次迭代中,将当前累计值与新值相加。形成累计求和的效果。

这样,我们可以得到一个包含每一步累计工时(以天为单位)的结果数组,便于后续进一步计算开工时间和完工时间。

开工时间

第三步是计算每条生产线的开工时间。给定的统一开工日期是9月30日,这个信息由生产计划员在单元格J2中录入。我们需要将这个日期与筛选出的第一生产线(1#)的标准工时累加后的天数进行垂直拼接,然后去掉最后一行的结果,从而得到每张生产任务的实际开工日期。以下是具体的公式:

=DROP(VSTACK(J2,J2+SCAN(0,FILTER(M5#,G5#="1#")/12,SUM)),-1)

公式解释:

VSTACK(J2, ...): 将J2单元格中的日期(即9月30日)与后续计算出的每个累计天数相加后的日期垂直堆叠。

J2 + SCAN(..)):

FILTER(M5#, G5#="1#")/12:筛选出第一生产线的所有生产任务的标准工时,并将其转换为天数。

SCAN(...):对这些天数进行累加,每次累加都将当前累计值加上新的天数值

J2 + ...:将初始日期9月30日与累加后的天数相加,得到每个生产任务的实际开工日期。

DROP(..., -1): 去掉结果数组的最后一行,因为最后一行是最后一个生产任务的完工时间,而不是下一个任务的开工时间。

通过上述步骤和公式,我们可以得到一个包含每张生产任务实际开工日期的列表。

水平堆叠

最后一步就是用函数REDUCE进行垂直方向堆叠,把不同线体筛选后的数据全部堆叠起来。录入动态数组公式:

=LET(J,J2,G,G5#,DROP(REDUCE("",UNIQUE(G),LAMBDA(X,Y,VSTACK(X,VSTACK(J,DROP(J+SCAN(,FILTER(M5#,G=Y),SUM)/12,-1))))),1))

公式解释:

LET 定义:

J 代表单元格 J2 中的统一开工日期(9月30日)。

G 代表列 G5#,其中包含了每张生产任务对应的线体信息。

UNIQUE(G): 提取出所有唯一的生产线编号。

REDUCE 函数:

初始值为一个空字符串 ""。

对于每个唯一的生产线编号,执行以下操作:

FILTER(...): 筛选出属于当前生产线的所有生产任务的标准工时。

/12: 将标准工时转换为天数。

SCAN(0, ...): 对转换后的天数进行累加求和。

J + ...: 将初始日期加上累计天数,得到每个生产任务的实际开工日期。

DROP(..., -1): 去掉最后一个累计天数,因为它对应的是完工时间而不是下一个任务的开工时间。

VSTACK(J, ...): 将初始日期与计算出的开工日期垂直堆叠。

VSTACK(, ...): 将当前结果与之前的结果垂直堆叠起来。

DROP(..., 1): 去掉最终结果数组的第一行,因为第一行是一个空字符串(REDUCE的初始值),不需要显示。

通过上述步骤和公式,我们可以将所有生产线的开工日期进行垂直堆叠,并生成一个包含每张生产任务实际开工日期的列表。这样可以方便地查看和管理不同生产线的任务安排。

同理也可堆叠出过完工日期:录入对应公式:

=LET(J,J2,G,G5#,DROP(REDUCE("",UNIQUE(G),LAMBDA(X,Y,VSTACK(X,J+SCAN(,FILTER(M5#,G=Y),SUM)/12))),1))

至此,一个全自动的主生产计划(MPS)排程表模型已经设计完成。由于采用了全动态数组公式,无需手动填充公式,这大大提升了生产计划员的工作效率。

最后总结

通过上述步骤,我们成功构建了一个全自动的主生产计划(MPS)排程表模型。该模型利用了Excel&WPS中的全动态数组公式,能够自动计算每条生产线的具体开工时间和完工时间,从而极大地简化了生产计划员的工作流程。具体来说,整个过程包括筛选产品、累计工时、转换为天数、计算开工时间以及计算完工时间等关键步骤。

采用这种动态化处理方式的优势在于:

提高效率:无需手动填充或调整公式,减少了人为错误的可能性,同时节省了大量时间。

灵活性强:当生产数据发生变化时,只需更新基础数据,所有相关计算将自动更新,确保计划的实时性和准确性。

易于维护:一旦模型建立完成,后续的维护工作变得相对简单,生产计划员可以更专注于其他重要任务。

可视化管理:生成的排程表清晰地展示了各生产线的任务安排,便于管理层进行监督和决策。

总之,这个全自动MPS排程表模型不仅提高了生产计划的编制效率,还增强了对生产过程的控制与管理,是现代制造业中不可或缺的工具之一。通过这样的自动化解决方案,企业可以更好地应对市场变化,优化资源配置,提升整体运营效率。

0 阅读:0

职场计划有古哥

简介:感谢大家的关注