一列(行)转多行多列——多行多列转一列(行)

今天运用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的基础用法。

posted @ 2020-10-10 13:39  蔚蓝lk  阅读(385)  评论(0编辑  收藏  举报