博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
变成一列_Excel一列数据转多行多列,这4条函数公式可以学起来
阅读量:5742 次
发布时间:2019-06-18

本文共 2428 字,大约阅读时间需要 8 分钟。

如何将一列数据转成多行多列?之前跟大家分享了2个方法,数据透视表和Power Query,今天我跟大家分享几个用函数公式实现的方法。

下图中,我们需要将A列的数据转成C:G多行多列的数据。

8e021beed20807f82d31a7425fc380c4.png

方法一:使用INDEX+COLUMN+ROW函数组合。

具体操作步骤如下:

1、选中C1单元格,在编辑栏中输入公式:=INDEX($A:$A,COLUMN(A$1)+5*(ROW($A1)-1))&"",按Enter键回车。

f87027d6834a4fb53d7e7c8563ac88b6.png

2、将公式右拉填充至G1单元格,下拉填充至G4单元格即可。

98037f2843f4b12ba8850c1fbc5a14a8.png

3、公式解析。

COLUMN(A$1):COLUMN函数返回一引用的列号。COLUMN(A$1)返回A1单元格所在列号,为1,如果往右填充,列号会依次增加1,如果往下填充,同一列的列号不变。

7cfb08e4ad09cba2eb849f2e3f5d5474.png

ROW($A1):ROW函数返回一个引用的行号。ROW($A1)返回A1单元格所在的行号,为1,如果往右填充, 同一行所在行号不变,如果往下填充,同一列的行号依次增加1。

6f05e930ec48e8897d70b5b10490bf9d.png

=INDEX($A:$A,COLUMN(A$1)+5*(ROW($A1)-1))&"":INDEX函数是在给定的单元格区域中,返回特定行列交叉处单元格的值或引用。把COLUMN(A$1)和ROW($A1)的值代入公式,公式变成=INDEX($A:$A,1)&"",也就是在A列单元格区域中,返回第1个单元格的值。公式后面用&符号跟""连接起来,也就是在A列单元格区域中,如果没有匹配到值,就返回空,把错误值给屏蔽掉。

4、完整的动图演示如下。

ca96baac70df73bf7c1fbab64d2e09f3.gif

方法二:使用INDEX+COLUMNS+ROWS函数组合。

1、选中C1单元格,在编辑栏中输入公式:=INDEX($A:$A,COLUMNS($C$1:C$1)+5*(ROWS($A$1:$A1)-1))&"",按Enter键回车。

363d453c57c4ff102c7d9e58f30fd03a.png

2、将公式右拉填充至G1单元格,下拉填充至G4单元格即可。

facf9c738474d3dfb56252cc0b7e3e52.png

3、公式解析。

COLUMNS($C$1:C$1):COLUMNS函数返回某一引用或数组的列数。COLUMNS($C$1:C$1)返回C1单元格所在列号,为1。公式往右填充,同一行的列号依次增加1,公式往下填充,同一列的列号不变。

e5a9e90f4e8a6142705c83d5b73b305b.png

ROWS($A$1:$A1):ROWS函数返回某一引用或数组的行数。ROWS($A$1:$A1)返回C1单元格所在的行号。公式往右填充,同一行所在的行号不变,公式往下填充,同一列所在的行号依次增加1。

301e0e2fe26db0f3d210bd3c2b525535.png

=INDEX($A:$A,COLUMNS($C$1:C$1)+5*(ROWS($A$1:$A1)-1))&"":INDEX函数是在给定的单元格区域中,返回特定行列交叉处单元格的值或引用。把COLUMNS($C$1:C$1)和ROWS($A$1:$A1)的值代入公式,公式变成=INDEX($A:$A,1)&"",也就是在A列单元格区域中,返回第1个单元格的值。公式后面用&符号跟""连接起来,也就是在A列单元格区域中,如果没有匹配到值,就返回空,把错误值给屏蔽掉。

4、完整的动图演示如下。

e0dbf450b48b2fe020157101aafc64a2.gif

方法三:使用INDIRECT+COLUMN+ROW函数组合。

1、选中C1单元格,在编辑栏中输入公式:=INDIRECT("a"&COLUMN(A$1)+5*(ROW($A1)-1))&"",按Enter键回车。

5ecaac6592482e4f1f1a0e50e066f555.png

2、将公式右拉填充至G1单元格,下拉填充至G4单元格即可。

0e6bea742045e969f4ca280eec76b247.png

3、公式解析。

COLUMN(A$1):COLUMN函数返回一引用的列号。COLUMN(A$1)返回A1单元格所在列号,为1,如果往右填充,列号会依次增加1,如果往下填充,同一列的列号不变。

ROW($A1):ROW函数返回一个引用的行号。ROW($A1)返回A1单元格所在的行号,为1,如果往右填充, 同一行所在行号不变,如果往下填充,同一列的行号依次增加1。

=INDIRECT("a"&COLUMN(A$1)+5*(ROW($A1)-1))&"":INDIRECT函数返回文本字符串所指定的引用。把COLUMN(A$1)和ROW($A1)代入公式,公式变成:=INDIRECT("a"&1)&"",&符号是连接符,"a"&1表示a和1相连接,变成a1,也就是用INDIRECT函数去引用A1单元格的内容,公式后面用&符号跟""连接起来,也就是在A列单元格区域中,如果没有匹配到值,就返回空,把错误值给屏蔽掉。

4、完整的动图演示如下。

f224b10614de35cea8b2fdb658593c34.gif

方法四:使用OFFSET+COLUMN+ROW函数组合。

1、选中C1单元格,在编辑栏中输入公式:=OFFSET($A$1,COLUMN(A$1)+5*(ROW($A1)-1)-1,0)&"",按Enter键回车。

ba415d687a9884cd745c102a1a6b6835.png

2、将公式右拉填充至G1单元格,下拉填充至G4单元格即可。

108d5735e08bd7fe92e3cffe60f4f6b9.png

3、公式解析。

COLUMN(A$1):COLUMN函数返回一引用的列号。COLUMN(A$1)返回A1单元格所在列号,为1,如果往右填充,列号会依次增加1,如果往下填充,同一列的列号不变。

ROW($A1):ROW函数返回一个引用的行号。ROW($A1)返回A1单元格所在的行号,为1,如果往右填充, 同一行所在行号不变,如果往下填充,同一列的行号依次增加1。

=OFFSET($A$1,COLUMN(A$1)+5*(ROW($A1)-1)-1,0)&"":OFFSET函数,是以指定的引用为参照系,通过给定偏移量返回新的引用。把COLUMN(A$1)和ROW($A1)代入公式,公式变成:=OFFSET($A$1,1,0)&"",也就是说,以A1单元格为参照系,向下移动一格,向右移动0格,也就是不移动,所以还是A1单元格的内容,公式后面用&符号跟""连接起来,也就是在A列单元格区域中,如果没有匹配到值,就返回空,把错误值给屏蔽掉。

4、完整的动图演示如下。

10b9225062b1828655912170054c12a2.gif

好了,今天就跟大家分享到这里,如果你觉得文章有用,可以转发分享给你的朋友,希望多多支持,谢谢!

转载地址:http://cynzx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
2011.9.12
查看>>
java自带线程池和队列详细讲解
查看>>
XML教程
查看>>
AS3.0 Array常用方法总结
查看>>
oracle体系结构
查看>>
POJ 1016 Numbers That Count 不难,但要注意细节
查看>>
J2音乐房
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
nagios在apache上安装配置
查看>>
开启“无线网络”,提示:请启动windows零配置wzc服务
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
帧中继交换机配置实例
查看>>
【原创】MySQL里求给定的时间是所在月份的第几个礼拜
查看>>
怎么给PDF添加水印,PDF添加水印的方法
查看>>
我的友情链接
查看>>
看看各大互联网公司的食堂,人比人气死人!!!
查看>>
loadrunner通过使用libmysql.dll完成mysql的测试
查看>>