全文约1500字

大家好,我是古老师,专注于PMC(生产计划与控制)领域的教学。今天我们要介绍的是PMC系列中的第23个表格模型——排程工序分解模型-3。此模型特别适用于在生产计划中对零件进行工序分解排程的情况,能够自动将已排程的零件依据工艺路线拆分为独立的工序。
在之前的文章中,我们已经完成了两个输入报表《产品工艺数据库》和《MPS主生产计划》的设计,以及一个输出报表《工序分解负荷明细表》的设计。今天,我们将分享《工序分解负荷明细表》的汇总思路,并讲解如何设计动态图表与其联动。

在《工序分解负荷明细表》中,已经有一列针对每一张生产任务分解后的工序名称。这些工序名称是垂直排列的数据,并且存在重复项。为了对生产任务分解后的工序进行工时汇总,我们首先需要去除重复的工序名称并将它们转换为水平方向的数据。可以通过录入以下动态数组公式来实现这一目标:
=TOROW(UNIQUE(工序分解!D2#))
函数解释:
使用 UNIQUE 函数对《工序分解》表中的 D 列(工序名称)进行去重处理,然后使用 TOROW 函数将去重后的结果转换为水平方向的数据。

接下来,我们将针对生产任务对应的工序进行工时汇总并自动求和。由于每张生产任务对应的工序顺序号加上工序名称形成了唯一值(例如:"WK-201下料"),我们可以使用查找引用函数直接通过双条件引用《工序分解负荷明细表》中的工时数据。
有了这些数据后,可以配合 LET 函数将结果定义为变量 A,然后使用 VSTACK 函数合并汇总求和后的结果(通过 BYCOL 函数计算)。这样就可以得到一个动态汇总的数据区域。
录入动态数组公式:
=LET(A,XLOOKUP(E2#&J1#,工序分解!A2#&工序分解!D2#,工序分解!G2#,0),VSTACK(A,BYCOL(A,SUM)))

函数解释:
使用 XLOOKUP 函数根据两个条件(生产任务的工序顺序号和工序名称)在《工序分解》表中查找对应的工时数据。具体来说,E2# & J1# 是组合的查找值,工序分解!A2# & 工序分解!D2# 是组合的查找范围,工序分解!G2# 是返回的工时数据列。
LET 函数将上述查找结果定义为变量 A。
BYCOL 函数对 A 中的每一列进行求和。
最后,使用 VSTACK 函数将原始数据 A 和求和结果垂直堆叠在一起,形成一个包含所有数据和汇总结果的动态区域。
任务工时刚刚计算的是工序的工时汇总,这是从工时角度进行的汇总,此时表格呈现出二维结构。接下来,我们可以继续增加任务工时的汇总。首先,将上面计算得到的工序工时结果定义为区域 J2#,然后录入以下动态数组公式:
=BYROW(J2#,SUM)
函数解释:
使用 BYROW 函数对区域 J2# 中的每一行进行求和操作。
这样就可以得到每个生产任务的总工时。
通过这个步骤,我们不仅得到了每个工序的工时汇总,还进一步得到了每个生产任务的总工时。

最后是动态图表的设计。首先,我们需要将标题引用过来,然后使用 VSTACK 函数将工时汇总的数据与标题合并,形成图表所需的两行关键数据(标题和汇总数据)。为了实现这一点,可以使用 TAKE 函数保留工时汇总数据的最后一行。录入以下动态数组公式:
=VSTACK(J1#,TAKE(J2#,-1))

函数解释:
J1# 是包含标题的区域。
TAKE(J2#, -1) 从 J2# 区域中提取最后一行的数据,即最新的工时汇总结果。
VSTACK(J1#, TAKE(J2#, -1)) 将标题和最新的工时汇总结果垂直堆叠在一起,形成一个新的数组,该数组包含两行关键数据:第一行是标题,第二行是汇总数据。
最后,在第二行前面插入一个合计单元格,然后选中所有数据。按下快捷键 Alt + F1 创建一个快速柱状图,并调整图表的大小,使其覆盖住这些数据。这样,一个动态的数据表就完成了。
具体步骤如下:
在第二行前面插入一个合并单元格,确保标题和数据对齐。
选中包含标题和数据的所有单元格。
按下快捷键 Alt + F1,这将快速创建一个默认类型的图表(通常是柱状图)。
调整图表的大小和位置,使其覆盖住底层的数据区域,从而达到整洁的显示效果。
通过这些步骤,你就可以创建一个动态的数据表,该表格能够实时反映最新的工时汇总情况,并且图表会自动更新以匹配新的数据。
