告别手工算料:动态数组打造智能BOM替代分析 - 3

B站影视 港台电影 2025-08-08 19:49 2

摘要:在昨天的文章中,我们已经成功完成了单行BOM数据从二维结构到一维结构的转换,实现了主料与替代料的垂直展开与统一整合。然而,转换完成后的数据仍缺少一个关键信息:替代优先级。

在昨天的文章中,我们已经成功完成了单行BOM数据从二维结构到一维结构的转换,实现了主料与替代料的垂直展开与统一整合。然而,转换完成后的数据仍缺少一个关键信息:替代优先级。

在实际生产管理中,并非所有替代料都可以随意使用——通常存在明确的选用顺序:优先使用主料,其次才是第一替代、第二替代……依此类推。因此,为了支持后续的智能齐套分析与物料判定,必须为每一条记录明确标注其使用优先级。

为便于管理和系统识别,本文采用数字序号升序法来定义优先级:

优先级 = 1:表示默认使用的主料(即原“子件”列中的物料);

优先级 = 2:对应“替代料1”;

优先级 = 3:对应“替代料2”;

优先级 = 4:对应“替代料3”;

……以此类推。该规则简单直观,易于在Excel中通过公式自动识别和生成,也为后续“按优先级匹配库存”“判断可替代性”提供了逻辑基础。

录入以下动态数组判断替代料的优先级:

=SCAN(0,B2#,LAMBDA(X,Y,IF(YOFFSET(Y,-1,),1,X+1)))

公式解释:

B2# 是指向“子件序号”列的动态数组,例如 {3;3;3;5;5;5;5},表示各行所属的装配位置;

SCAN 函数从上到下扫描该数组,X 为累积的优先级值(初始为0),Y 为当前行的子件序号,通过 OFFSET(Y,-1,) 获取上一行的序号,判断当前行是否与上一行相同:若不同,说明进入新的子件组,优先级重置为1;若相同,则在前一个优先级基础上加1,从而实现每组内优先级从1开始连续递增的自动编号。

在MPS(主生产计划)部分的设计中,原本计划集成自动排程功能,实现从订单到生产任务的智能排产。然而,考虑到自动排程涉及复杂的时序运算、资源约束和批量计算,对Excel的性能要求较高,容易导致公式计算缓慢或不稳定,因此在当前版本中暂未内嵌自动排程逻辑。

为此,我们采用“结果导入”的方式,将已通过《全自动排程MPS计划表》完成一维化运算的排程结果直接引入本系统。只需将该表输出的四列关键数据:{"生产任务", "产品", "排程数量", "排程日期"},复制到当前模板的对应区域,即可快速构建出结构清晰、可追溯的一维MPS计划清单。

为了便于后续与BOM展开、物料需求计算及欠料分析的联动处理,我们需要将复制过来的MPS计划数据进行字段化管理,使其具备类似数据库表的结构,支持动态引用和自动化扩展。操作步骤:新建一张工作表,命名为 “MPS输出”,用于存放结构化处理后的MPS计划数据;在 A2 单元格中输入以下公式:=TRIMRANGE(MPS计划!A2:A30000),将该公式向右填充至 D列,分别对应原始MPS计划表中的四列数据:

实现动态数组化:每列均以 TRIMRANGE 函数提取有效数据,自动过滤空行或无效记录;

自动扩展:支持在 30,000 行范围内动态识别新增的生产任务,无需手动调整公式范围;

字段清晰:形成标准的“字段-记录”二维结构,便于使用 FILTER、XLOOKUP 等函数进行条件查询与关联计算。

通过字段化处理,我们实现了:

数据标准化:将原始数据转化为可编程引用的结构化表;

提升可维护性:后续BOM展开、物料需求计算均可基于此表动态关联;

支持大规模计划:30,000 行的预设范围满足中小制造企业的排程容量需求;

为后续“按生产任务追溯物料需求”“分日期计算齐套情况”打下基础。

未完待续……

来源:古哥计划一点号

相关推荐