昨天在我的Excel交流群里小伙伴抛出了一个问题,如何把一列2000行的数据转成4列?这个题其实不难,给大家分享一下我的几种方法吧。


第一种:查找替换法

随手列举了2000行数据,就从1到2000了,这个中间你换成文本的数据也无所谓哈,如:

在旁边空白的单元格创建这种数据:

直接手动输入两行,剩下的就直接下拉填充就可以了。选中这组准备好的数据后,用Ctrl+H调出查找对话框,输入如下内容:

点击全部替换:

瞬间完成替换,最后直接复制粘贴为数值即可去掉公式了。

这个是横向排列的,如果要竖向排列,也就是一列500个数据,也同样可以这样操作。如:

用刚才的查找替换:

也是分分钟的事情。


第二种:借助Word

直接将原始数据复制进word之中,注意粘贴的时候选择只保留文本,不要直接复制粘贴:

全选所有,点击插入工具栏下的表格,下拉菜单中选择“文本转换成表格”:

弹出对话框,设置如下:

确定即可:

也是瞬间搞定,再将此数据粘贴到Excel中就可以了。

但是这个只能是这种横向的排列方式,稍微有点欠缺。


第三种:函数法

在空白单元格中输入:

公式为:=OFFSET($A$1,COLUMN(A1)-1+(ROW(A1)-1)*4,)

然后拖拽填充就可以了。


如果要竖着排列也没问题:

公式为:=OFFSET($A$1,ROW(A1)-1+COLUMN(A1)*500-500,)

然后拖拽填充就可以了。


第四种:Power Query直接转换

众所周知,PQ就是对数据进行整理和转换的,不过需要借助M函数,对小伙伴的技能需要一定的要求。

点击数据工具栏下的自表格区域,不要勾选表包含标题,因为这个没有标题,如果你有标题的话,就要勾选表包含标题了。

点击确定进入到PQ之中:

点击公式编辑栏的fx,也就是新增步骤,直接在里面输入:

公式:

= Table.FromColumns(List.Transform({0..(Number.RoundUp(Table.RowCount(源)/500)-1)},each List.Range(源[列1],_*500,500)))


关于这个M函数,以后在课程中会给大家慢慢介绍。完成之后直接点击右上角的关闭并上载即可。新的工作表会自动生成:


如果小伙伴需要横向排列,也是可以通过这种方法的。

公式是:

= Table.FromRows(List.Transform({0..(Number.RoundUp(Table.RowCount(源)/4)-1)},each List.Range(源[列1],_*4,4)))


最后同样是关闭并上载即可得到新的已经分好列的工作表了。


方法千万种,选择最适合自己的就好了。

关于PQ的课程,还在慢慢持续更新中,请关注: