多工序排程重生术:免代码免费用速翻倍!-1

古哥计划

优秀创作者

前段时间接到某工厂PMC的反馈,古老师前面帮他设计多工序排程这个表运算太慢了,接到这个反馈,我大概率猜到原因了,可能就是数据量太大的原因。解决这个问题也是非常痛苦的。因为数据量大的话,不是表格这个工具能够解决的。是需要系统的上数字化、信息化的。

但是考虑到成本的问题,该工厂一直没有上信息化,向我求助能否优化一下函数,特别强调了不要用VBA或者代码。接到这个即要成本低(表格免费)又要函数版本的,还要运算速度快的需求,古老师只能硬着头皮重新设计了。

原因分析

打开原来的设计的多工序报表,发现问题的原因有很多,主要就是以下几个:

  1. 工作表太多,工作日历表、排程表、分解表、BOM表全部集成成一起了;

  1. 函数用了堆叠函数,此函数的运算量非常大,每运算一次都需要在BOM表中进行筛选,筛选完成后进行堆叠;

  1. 数据量大,数据中BOM超过30000行,这是表格的天然限制;暂时无法解决;

重新设计

重新的设计的思路只有一个方向,把运算量大的函数如筛选堆叠递归判断判断等函数尽量变更成查找引用函数;尽可能的用数组模式和辅助列模式;把非核心的工作表进行剥离,如工作日历,负荷分析等,就只是计算负荷;因为数据量大这个问题是解决不了。

工艺名称

多工序的核心就是工艺名称,这个工艺名称的标准一定要统一,所以单独开一个工作表登记工艺名称,由工艺部门新增工艺的时候录入,设计3个字段:

A列字段1:标题为序号,属性为公式,数据来源判断D列字段的录入的数据。

=SEQUENCE(ROWS(TRIMRANGE(D2:D1000)))

B列字段2:标题为判断,属性为公式,判断C列的工艺名称是否重复;

=LET(A,TRIMRANGE(D2:D1000),B,VLOOKUP(A,GROUPBY(A,A,COUNTA),2,0),IF(B=2,"重复","唯一"))

C列字段3:标题工艺名,公式字段,将C列变成数组模式;

=TRIMRANGE(D2:D1000)

D列字段4:标题工艺名称,文本字段,由工程师人工录入;

工艺路线

工艺名称基础数据库工作表设计完成后,第二个工作表就设计工艺路线了,设计成人工录入的二维表结构,设计的字段分为三个大区域:

垂直区:也就行区区,录入唯一的产品编码,以及产品编码对应的关键信息,如分类、产品名称,产品的拼版数、印刷数等信息;

水平区:纯数字,人工录入,代表工艺顺序,如1、2、3,数字3代表第3序;

交错区:下拉选项,人工下拉选择,数据来源的工艺名称数据库

设置方法:数据→数据有效性→有效性条件→允许→序列→来源工艺输入表中C2#(也就是工艺名称的数组模式)

通过这样的设计,减少人工录入选择的错误。同时用OFFSET偏移的设计来解决人工录入过程中可能出错的问题。

未完待续……

广东省
浏览 90
收藏
3
分享
3 +1
1
+1
全部评论 1
 
· 广东省
回复