Excel中如何实现将列分组转置为行?

时间:2024-03-10 20:58:55

 

如上图所示,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列中相应单元格里的内容,就达到了将单列数据转换为多行多列的目的。

为了方便大家学习,我把相关的课程和练习整理下方,有需要的自取即可。

Excel零基础免费入门课 - 网易云课堂

❤Excel常用函数实战精讲 - 网易云课堂