如上圖所示,A列為產品的相關信息,從A1單元格起每5個單元格的數據為一組。要求將A列單列數據轉換為右邊的單元格區域的形式。每款產品信息占1行5列。應該如何操作呢?
很多人的第一反應就是Excel的轉置功能或者利用轉置函數transpose,但轉置功能或者轉置函數都只能針對上面的一組一組來進行轉置,效率非常低下。有什么方法能快捷能實現將列分組轉置成行呢?
下面給大家介紹兩種方法。
第一種方法:利用word里的“將文字轉換為表格”的功能
單擊A列數據里任意一單元格,按Ctrl+A全選A列的數據,然后Ctrl+C復制;來到word里,Ctrl+V粘貼為“只保留文本”。
在word里同樣按Ctrl+A全選上一步獲得的文本內容,點擊【插入】-【表格】-【文本轉換成表格】
重點來了!!
在彈出的“將文字轉換成表格”的對話框里,我們將表格尺寸的“列數”設置為5(因為產品的相關信息列里,是每5個單元格的數據為一組的)。下面的設置默認即可,當然,你也可以調整,比如列寬的設置,我這里勾選為“根據內容調整表格”,這樣可以使得轉換后的表格更美觀。
最后,word里面,將會根據我們前邊的設置,將原來一列的文本內容,生成了一個N行5列的表格。
我們把表格復制到Excel里即可。
總結:這是一個Excel+Word協作案例。“轉置”類的復雜問題可以考慮Word表格與Excel的表格的連通性來進行解決,Word中“將文字轉換成表格”這個功能,大家要熟練掌握哦。
第二種方法:行列函數和引用函數的結合
我們首先來認識一下行、列函數。
ROW函數,是行號函數。它的功能是返回所引用的行號。如ROW(A1),返回的是A1單元格所在的行號,即,第一行,所以,返回數值1。ROW(A2),返回2;ROW(A3),返回3;以此類推。
同理地,COLUMN函數是返回引用的列號。如COLUMN(A1),返回的是A1單元格所在的列號,即,第一列,所以,返回數值1。COLUMN(B1)返回2;COLUMN(C1)返回3;以此類推。
所以,ROW函數可以生成垂直方向連續遞增的自然序列;COLUMN函數可以生成水平方向上連續遞增的自然數序列。
它倆組合就可以生成指定規則的序列,結合引用函數INDEX,就可以實現將單列轉換為多行多列的效果。
回到案例中。
在C1單元格里,我們輸入以下公式,復制到C1:G6的單元格區域
=INDEX($A:$A,5*ROW(A1)-5+COLUMN(A1))
公式怎么理解呢?
“5*ROW(A1)-5+COLUMN(A1)”計算的結果為1。當公式向下復制時,ROW(A1)會依次變成
ROW(A2)、ROW(A3)…計算結果就分別為6,11,16…即生成步長為5的等差序列。
當公式向右復制時,COLUMN(A1)會依次變成COLUMN(B1)、COLUMN(C1)…計算結果分別為2,3,4…即步長為1的等差序列。
“5*ROW(A1)-5+COLUMN(A1)”公式部分,就會生成如下圖所示的單元格區域結果。
然后,在最外層,我們再來嵌套一個INDEX函數,來提取A列中相應單元格里的內容,就達到了將單列數據轉換為多行多列的目的。
為了方便大家學習,我把相關的課程和練習整理下方,有需要的自取即可。