EXCEL中一列(行)轉多行多列或多行多列轉一列(行)

寫在前面:

之前分享過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中一列(行)轉多行多列或多行多列轉一列(行)】


推薦閱讀:

身份證 怎樣將一列幾萬條身份證號中重複的篩選出來,並刪除或剪切其中一條出來的函數或辦法?

TAG:MicrosoftExcel | Excel公式 | Excel函數 |