今天继续分享动态数组专属函数系列行列数组函数系列之行列的相互转换,这个和TOROW和TOCOL还是有区别的,这两个函数可以把多区域数据快速转成一列或一行,但是没有办法转换成多行多列。
如果需要将数据转换成多行多列,就需要用到WRAPCOLS函数和WRAPROWS,这两个函数可以将一行或一列数据转成多行多列;

WRAPCOLS函数
这个函数的定义为:按指定顺序垂直方向追加数组,以返回更大的数组,也可以理解为“按列方向累加,一层一层叠加”,如下图所示,分别录入公式:
A1=SEQUENCE(10),生成1,2,3……的列数组区域
C2=WRAPCOLS(A1#,4,""),把数组1到10,转换成每列4行的二维数组,超出部分显示为空。
C7 =WRAPCOLS(A1#,3,""), 把数组1到10,转换成每列3行的二维数组,超出部分显示为空。
注意:数字1,2,3的方向,是列方向,也就是垂直方向;

WRAPROWS函数
这个函数的定义为:按指定顺序水平方向追加数组,以返回更大的数组,也可以理解为“按行方向累加,一层一层叠加”,如下图所示,分别录入公式:
A1=SEQUENCE(10),生成1,2,3……的列数组区域
C2=WRAPROWS(A1#,3,""),把数组1到10,转换成每行3列的二维数组,超出部分显示为空。
C7 =WRAPROWS(A1#,4,""), 把数组1到10,转换成每行4列的二维数组,超出部分显示为空。
注意:数字1,2,3的方向,是行方向,也就是水平方向;

案例1:把单列数据转换成多列
场景:有时候需要把所有生产任务号全部打印出来,从ERP导出的话,都是在一列,直接打印的话,太浪费纸(留空夶多),如下图中,需要把单列中的几百张生产任务号全部打印出来,就需要用到转换函数来转换。
录入函数:=WRAPROWS(A2:A300,5,""),即可直接转换,转换后调整一下打印区域,就可以最大化打印了。为了保证留空最小,可以调整参数,如把5变成6,相当于一行显示6个生产任务号。

案例2:把多列的数据转换多列
场景:在看数据的时候,尽可能的让数据显示在一个屏幕,可以减少拖屏操作,提高效率,同时在需要打印的时候也可以最大化打印,减少纸张的浪费。如果数据有两列的情况下,需要把两列转换成六列一一对应。
录入函数:=WRAPROWS(TOCOL(A2:C500),12,""),即可转换,转换前需要用一个技巧,就是把多列数据转成单列数据,用函数TOCOL,范围选中C列的目的是为了,转换后中间久一列隔断列;

案例3:不规则数据的特殊转换
场景:有时候从系统出导出的数据格式不符合标准的一维数据格式,如下图中B列,B列中包含姓名、手机、学历三个信息,标准的一维数据应该是姓名就是姓名,手机就是手机,如下图所示。
这样的一维数据无论是将来做数据透视表分析、还是写引用函数都会方便许多,所以需要把B、C列的数据转换一下;

录入函数:
=DROP(VSTACK(TOROW(B2:B5),WRAPROWS(C2:C16,4,0)),,-1),即可把不规范的数据转换成标准的一维数据,别看这个公式很长,分别成以下几个步骤就简单多了。
录入函数:=WRAPROWS(C2:C16,4,0),把C列数据转换成每行4列累加
录入函数:=TOROW(B2:B5),把标题转成水平方向
录入函数:=VSTACK(E13#,E8#),把上面转换出来结果继续合并成一个水平区域的数组;

案例4:一维数据转换二维数据
场景:一维数据转换成二维数据的方法说了很多,如果是一些特定的一维数据,如生产部门有三条线体,每天的日报产量是一维的,而且没有重复项,就可以用到这个技巧,这个技巧约束太多,只做效果演示;
录入函数:F3=UNIQUE(B3:B11),把B列数据日期去重
录入函数:G2=TOROW(UNIQUE(C3:C11)),把C列的线体去重,并转换成水平方向;
录入函数:G3=WRAPROWS(D3:D11,3),把D列的数据转换成每行3列的区域。
最终效果如下图:


我是古哥:
从事制造行业18年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!