查看: 7|回复: 0

【原】EXCEL中一列(行)转多行多列或多行多列转一列(行)

[复制链接]

23万

主题

23万

帖子

71万

积分

论坛元老

Rank: 8Rank: 8

积分
713259
发表于 2020-10-17 15:03:46 | 显示全部楼层 |阅读模式
 

 

前面分享过EXCEL中简单的单列数据转单行,或单行数据转单列【EXCEL行列互转三种方法 】,其中有一个方法用的就是OFFSET函数与ROW、COLUMN函数的嵌套。
今天运用OFFSET+ROW+COLUMN函数组合处理更多稍微复杂一点的数据。

1.一列转多列多行(或多行多列)
①先列后行,比如一列数据转为四列多行。
在目标区域第一个单元格B19输入以下公式,然后向右拉到第4列,再下拉直到出现空白。
=OFFSET($A$1,COLUMN(A1)-1+(ROW(A1)-1)*4,)&""

②先行后列,比如一列数据转为四行多列。
在单元格H19输入以下公式,然后向下拉到第4行,再右拉直到出现空白。
=OFFSET($A$1,ROW(A1)-1+COLUMN(A1)*4-4,)&""


2.一行转多列多行(或多行多列)
①先列后行,比如一行数据转为三列多行。
同样,此例在单元格B6输入以下公式,然后向右拉到第3列,再下拉直到出现空白。
=OFFSET($A$1,,(COLUMN(A1)-1)+(ROW(A1)-1)*3,)&""

②先行后列,比如一列数据转为三行多列。
在单元格H6输入以下公式,然后向下拉到第3行,再右拉直到出现空白。
=OFFSET($A$1,,(ROW(A1)-1)+(COLUMN(A1)-1)*3,)&""


3.多行多列转一列
比如源数据六行五列:

①先向下引用源数据,再向右引用。
单元格B9输入以下公式,下拉直到出现空白。
=OFFSET($A$1,MOD(ROW(A6),6),ROW(A6)/6-1,)&""
②先向右引用源数据,再向下引用。
单元格D9输入以下公式,下拉直到出现空白。
=OFFSET($A$1,ROW(A5)/5-1,MOD(ROW(A5),5))&""


4.多行多列转一行
多行多列数据转成单行的情况实际应用中应该不算常见,不过这里也一并整理了,若需要可直接套用公式。
比如源数据五行六列:

①先向右引用源数据,再向下引用。
单元格B8输入以下公式,右拉直到出现空白。
=OFFSET($A$1,INT(COLUMN(F1)/6)-1,MOD(COLUMN(F1),6))&""
②先向下引用源数据,再向右引用。
单元格B9输入以下公式,右拉直到出现空白。
=OFFSET($A$1,MOD(COLUMN(E1),5),INT(COLUMN(E1)/5)-1)&""


说明:
①ROW()返回行号,比如ROW(A2)=2;
②COLUMN()返回列号,比如COLUMN(F1)=6;
③MOD()求余数,比如MOD(1,5)=1,即1÷5余数是1,再比如MOD(5,5)=0,因为5被5整除,没有余数;
④上面每个公式最后都加了&"",作用是把引用空单元格得到的0去掉,显示为空白;
⑤上面公式中用到不少逗号【,】(英文半角状态下),不能随意省略或移动位置,每一个小豆芽都有它存在的意义,有兴趣研究的可以了解一下OFFSET的基础用法【让你的EXCEL表格动起来——OFFSET函数】。
 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| Archiver|手机版|小黑屋| 师哈哈 |网站地图

Copyright © 2019-2025 Www.biiyy.Com.   All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备14049462-3号 )