如上图所示,A列为产品的相关信息,从A1单元格起每5个单元格的数据为一组。要求将A列单列数据转换为右边的单元格区域的形式。每款产品信息占1行5列。应该如何操作呢?
很多人的第一反应就是Excel的转置功能或者利用转置函数transpose,但转置功能或者转置函数都只能针对上面的一组一组来进行转置,效率非常低下。有什么方法能快捷能实现将列分组转置成行呢?
下面给大家介绍两种方法。
第一种方法:利用word里的“将文字转换为表格”的功能
单击A列数据里任意一单元格,按Ctrl+A全选A列的数据,然后Ctrl+C复制;来到word里,Ctrl+V粘贴为“只保留文本”。
在word里同样按Ctrl+A全选上一步获得的文本内容,点击【插入】-【表格】-【文本转换成表格】
重点来了!!
在弹出的“将文字转换成表格”的对话框里,我们将表格尺寸的“列数”设置为5(因为产品的相关信息列里,是每5个单元格的数据为一组的)。下面的设置默认即可,当然,你也可以调整,比如列宽的设置,我这里勾选为“根据内容调整表格”,这样可以使得转换后的表格更美观。
最后,word里面,将会根据我们前边的设置,将原来一列的文本内容,生成了一个N行5列的表格。
我们把表格复制到Excel里即可。
总结:这是一个Excel+Word协作案例。“转置”类的复杂问题可以考虑Word表格与Excel的表格的连通性来进行解决,Word中“将文字转换成表格”这个功能,大家要熟练掌握哦。
第二种方法:行列函数和引用函数的结合
我们首先来认识一下行、列函数。
ROW函数,是行号函数。它的功能是返回所引用的行号。如ROW(A1),返回的是A1单元格所在的行号,即,第一行,所以,返回数值1。ROW(A2),返回2;ROW(A3),返回3;以此类推。
同理地,COLUMN函数是返回引用的列号。如COLUMN(A1),返回的是A1单元格所在的列号,即,第一列,所以,返回数值1。COLUMN(B1)返回2;COLUMN(C1)返回3;以此类推。
所以,ROW函数可以生成垂直方向连续递增的自然序列;COLUMN函数可以生成水平方向上连续递增的自然数序列。
它俩组合就可以生成指定规则的序列,结合引用函数INDEX,就可以实现将单列转换为多行多列的效果。
回到案例中。
在C1单元格里,我们输入以下公式,复制到C1:G6的单元格区域
=INDEX($A:$A,5*ROW(A1)-5+COLUMN(A1))
公式怎么理解呢?
“5*ROW(A1)-5+COLUMN(A1)”计算的结果为1。当公式向下复制时,ROW(A1)会依次变成
ROW(A2)、ROW(A3)…计算结果就分别为6,11,16…即生成步长为5的等差序列。
当公式向右复制时,COLUMN(A1)会依次变成COLUMN(B1)、COLUMN(C1)…计算结果分别为2,3,4…即步长为1的等差序列。
“5*ROW(A1)-5+COLUMN(A1)”公式部分,就会生成如下图所示的单元格区域结果。
然后,在最外层,我们再来嵌套一个INDEX函数,来提取A列中相应单元格里的内容,就达到了将单列数据转换为多行多列的目的。
为了方便大家学习,我把相关的课程和练习整理下方,有需要的自取即可。