如下图所示,如何将一列数据转换为多行多列,今天与大家分享几种方法,尤其是最后一种一定要掌握。




sql server 将一列转成行 sql一列转多行_字符串


第一种:借用OFFSET函数

在单元格中输入公式=OFFSET($A$1,ROW(A1)+COLUMN(A1)*4-4,),向右向下填充。


sql server 将一列转成行 sql一列转多行_函数用法_02


公式说明:

FFSET函数主要用来返回对单元格或单元格区域中指定行数和列数的区域的引用。返回的结果可以是单个单元格,也可以是单元格区域。它的语法结构为:

=OFFSET(基点,偏移的行数,偏移的列数,引用的行数,引用的列数)

注意:第2个参数为正数表示向下偏移,负数则向上偏移,第3个参数为正数表示向右偏移,负数则向左偏移;第4和第5个参数需为正数,如果省略的话,则表示引用的区域大小和基点一致。

ROW函数主要是返回引用的行号。它的语法结构为:=ROW([Reference])

ROW():返回公式所在行的行数,比如在表格第2行输入=ROW(),则返回值为2;

ROW(单元格地址):返回单元格所在的行数,比如输入=ROW(A5),则返回值为5;

ROW(开始行数:终止行数):返回引用行的行数,结果为一组数字。比如输入=ROW(1:5) ,返回第1:5行所在的行数{1;2;3;4;5}

COLUMN函数与ROW函数用法一致,返回的是引用的列号。

第二种:借用INDIRECT函数

在单元格中输入公式=INDIRECT("A"&ROW(A2)+4*COLUMN(A2)-4)


sql server 将一列转成行 sql一列转多行_Word_03


公式说明:

INDIRECT函数表示返回文本字符串所指定的引用。它的语法结构为:=INDIRECT(引用区域,引用格式)

想要了解更多INDIRECT函数用法,可以查看《INDIRECT和这些函数强强联合,这样解决问题估计你没见过!》

第三种:查找和替换法

先在空白区域中输入相应的单元格位置,具体如下图所示:


sql server 将一列转成行 sql一列转多行_sql server 将一列转成行_04


之后选中区域内容,按Ctrl+H打开查找和替换对话框,在查找中输入“A”,在替换为中输入“=A”,点击全部替换即可。


sql server 将一列转成行 sql一列转多行_sqlserver 多行转一列_05


第四种:结合Word

将表格的内容复制粘贴为只保留文本到Word文档,之后选中文本,点击插入——表格——文本转换为表格,设置好行数和列数,点击确定即可。


sql server 将一列转成行 sql一列转多行_函数用法_06


注意:利用Word转换,转换的格式有点区别,是先行后列的转换。