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

古哥计划

优秀创作者

前昨天已经设计了工艺名称、工艺路线这两张工作表,设计的亮点就是通过数据有效性序列的下拉选择了限制员工录入的范围,从而让工程师(或员工)录入产品代码对应的工艺路线减少出错的概率,提升录入效率。接下来就需要对这些录入的数据进一步自动化建模。

工艺输出

工艺输入这里采购类似数据库的设计原理,把员工录入的工艺路线整理一下,同时也方便后续的二维转一维的准备。也是三个方向,一个是垂直区,一个是水平区,一个是交错区;原来基础数据中如果员工录入中有空行,就会出现裁剪错误。所以这次升级采用标准的带“#”号偏移的思路。

垂直区:=OFFSET(路线.输入!$A$2#,,MATCH(A1,路线.输入!$B$1:$QZ$1,0))

水平区:=TRIMRANGE(路线.输入!F1:ZZ1)

这里用的是相对引用,录入区有增加列的情况下,可以自动变换。

交错区:=OFFSET(路线.输入!$A$2#,,MATCH(1,路线.输入!$B$1:$ZZ$1,0),,COLUMNS(F1#))

原来交错区只要一改变行列就出现异常,此处用MATCH数据1的设计确保加列不影响引用关系。

路线分析

员工录入产品对应工艺的时候,只录入了具体的工艺名称,此时是不知道具体每个产品需要经过多少道工序,所以需要增加一个公式统计每个产品的工序数,同时还需要增加一列工序合并,用符号“→”连接,这样就非常方便后续通过产品代码引用具体的工序工艺路线了。

加工工序总数=MAX(G1#)-BYROW(G2#,COUNT)

工艺路线合并

=BYROW(G2#,LAMBDA(X,TEXTJOIN("→",,SUBSTITUTE(X,0,""))))

转成一维

前期把二维的动态数组化后,就可以利用这个特性,快速把二维的工艺路线转成一维,转成一维的公式也是三个方向:

垂直:=LET(A,工艺.输出!G2#,B,工艺.输出!A2#,TOCOL(IF(A>0,B,\),3))

水平:=LET(A,工艺.输出!G2#,B,工艺.输出!G1#,TOCOL(IF(A>0,B,\),3))

交错:=LET(A,工艺.输出!G2#,TOCOL(IF(A>0,A,\),3))

未完待续……

广东省
浏览 95
1
3
分享
3 +1
1
1 +1
全部评论 1
 
点赞学习
· 广东省
回复