Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

我們在平時處理數據的過程中,經常會遇到如下圖1的數據形式,類似的數據格式在下一步的各種數據分析過程中是很不方便的,為此我們常常需要將數據轉換為圖2的形式。

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

圖1

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

圖2

那麼,我們如何能夠快速的將數據轉換為圖2要求的格式呢?下面介紹兩種方法。

一、公式法

使用IF、SMALL、RIGHT、TEXT、ROW、COLUMN、INDIRECT函數的配合,可以實現本功能。公式如下:

部門:=INDIRECT(TEXT(RIGHT(SMALL(IF($A$2:$E$16<>"",ROW($2:$16)*10+COLUMN($A:$E)*10001,99999),ROW(A1)),1),"r1c0"),)&""

姓名:=INDIRECT(TEXT(RIGHT(SMALL(IF($A$2:$E$16<>"",ROW($2:$16)*10+COLUMN($A:$E)*10001,99999),ROW(A1)),3),"r0c0"),)&""

結果為:

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

該公式看起來非常複雜,下面以姓名為例對該公式做一下解釋:

$A$2:$E$16<>"":根據A2:E16是否為空,生成一個邏輯數組,該數組為15行5列。{TRUE,TRUE,TRUE,TRUE,TRUE; TRUE,TRUE,TRUE,TRUE,TRUE;……},表格示意如下:

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

ROW($2:$16)*10:行數組成的數組,該數組為15行1列。{20;30;40……160};

COLUMN($A:$E)*10001:列數組成的數組,該數組為1行5列。{10001,20002,3003,40004,50005};

ROW($2:$16)*10+COLUMN($A:$E)*10001:以上兩個數組相加,根據數組運算法則,生成15行5列的數組。{10021,20022,30023,40024,50025;10031……}。表格示意如下:

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

IF():根據前面的邏輯數組,如果為空的全部填充為99999。{10021,20022,30023,40024,50025;10031……},表格示意如下:

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

SMALL(……,ROW(A1)):依次從小到大取出上述數組中的數據。

RIGHT(……,3):取出上述數據的後3位,上述的數據中最後一位表示單元格的列號,倒數第二位表示行號。

TEXT(……,"r0c0"):將上一步取出來的數字格式化為RC格式的單元格引用。

INDIRECT(……,):將文本變為單元格的引用,第二個參數省略代表引用為RC模式。

二、POWER QUERY工具

Excel官方發佈了POWER QUERY工具,可以更加方便的對數據進行處理,在Excel 2016中已經自帶了本工具,其他版本的Excel可以在微軟官方網站下載安裝包。

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

下面就演示使用該工具實現上述的功能,在工具面板中選擇"從表/範圍",彈出編輯PQ的編輯界面。

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

在【轉換】選項卡下選擇【逆透視列】,就可以得到需要的結果啦,然後將結果上載回工作表。

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

Excel多列內容首尾相連合併為一列,學會了絕對漲姿勢

怎麼樣,PQ工具的實現是不是很簡單呢?同時,該工具還提供了其他非常多的使用功能呢,大家可以多瞭解一下,同時再後期我也會持續給大家分享相關功能,希望大家一如既往的關注喲。


分享到:


相關文章: