二維碼 購物車
部落窩在線教育歡迎您!

Power Query實戰(zhàn)教學:如何將數(shù)據(jù)進行隔行轉(zhuǎn)置

?

作者:阿碩來源:部落窩教育發(fā)布時間:2021-09-07 10:11:11點擊:3638

分享到:
0
收藏    收藏人氣:0人
版權說明: 原創(chuàng)作品,禁止轉(zhuǎn)載。

編按:

Hello各位小伙伴們~說到數(shù)據(jù)的行列轉(zhuǎn)置,很多小伙伴可能會想到復制粘貼、Transpose函數(shù)或者VLOOKUP函數(shù)等方法。但是如果需要處理今天文中這樣有點雜亂的數(shù)據(jù),這些方法就有些吃力不討好了。搞定繁雜的數(shù)據(jù),當然還是Power Query(后文簡稱PQ)更加給力,今天我們一起來學習一下如何用PQ將奇數(shù)行和偶數(shù)行的數(shù)據(jù)分別放置到不同的列中。

 

哈嘍,大家好,歡迎來到部落窩教育!我是阿碩。最近,有小伙伴問了一個這樣的問題:有一組數(shù)據(jù),我想將這組數(shù)據(jù),每隔一行轉(zhuǎn)置到新的一列中,即將奇數(shù)行和偶數(shù)行分別放置在不同的兩列中,有什么好的辦法嗎?

 

我們先來看一下數(shù)據(jù),如下圖所示。A列是駕駛員的IDB列是駕駛員的性別,C列是屬性列,主要是用來標識D列中數(shù)據(jù)的類別,該列中的數(shù)據(jù)分別是收費站和時間(收費站和時間后面帶有序號),D列是數(shù)據(jù)列,該列中的數(shù)據(jù)是某ID通過的收費站的具體名稱和該ID通過該收費站的具體時間。

 

表格

描述已自動生成

 

可以看到,在D列中,除第一行是數(shù)據(jù)的標識字段之外,其他的數(shù)據(jù)都是隔行交替排列的。收費站的名稱都在偶數(shù)行,通過收費站的時間都在奇數(shù)行。這個小伙伴想得到的最終效果,就是將收費站和時間各自放在一列中,如下圖所示。

 

 

關注咱們公眾號的小伙伴,應該都已經(jīng)比較熟悉了,對于這種將數(shù)據(jù)由一維轉(zhuǎn)置成二維的問題,用PQ中的透視列功能來做,是最方便、最快捷的。

 

具體的操作方法,我們現(xiàn)在就安排上!

 

【解決問題的思路】首先,要整理屬性列的數(shù)據(jù),得到透視數(shù)據(jù)的字段;然后,添加索引列作為輔助列,用于控制數(shù)據(jù)循環(huán)的次數(shù);最后,進行透視列操作。

 

Step 1  整理屬性列的數(shù)據(jù),得到透視數(shù)據(jù)的字段

首先,我們點擊數(shù)據(jù)區(qū)域內(nèi)的任意一個單元格,如D9,然后依次點擊“數(shù)據(jù)”-“自表格/區(qū)域”,彈出“創(chuàng)建表”對話框,如下圖所示。


 

點擊“確定”之后,就進入了PQ編輯器,也就是PQ的操作界面,如下圖所示。


 

單擊選中屬性列(請注意,此時該列變?yōu)闇\綠色),然后依次點擊“轉(zhuǎn)換”-“拆分列”-“按照從非數(shù)字到數(shù)字的轉(zhuǎn)換”,如下圖所示。

 

 

點擊“按照從非數(shù)字到數(shù)字的轉(zhuǎn)換”后,原來的屬性列消失,在PQ中新增了兩列,分別是屬性.1和屬性.2。其中,屬性.1中的內(nèi)容就變成了不帶序號的“收費站”或“時間”,這一列就是我們想要的透視數(shù)據(jù)的列。而收費站或者時間的序號則被拆分到了屬性.2這一列中,如下圖所示。

 

 

由于屬性.2這一列對后續(xù)操作沒有用處,所以我們單擊鼠標右鍵,點擊“刪除”,將這一列刪除即可。刪除之后得到的結果如下圖所示。

 

 

Step 2  添加索引列作為輔助列,用于控制數(shù)據(jù)循環(huán)的次數(shù)

依次點擊“添加列”-“索引列”-“從0”,就可以添加一個索引列,如下圖所示。

 

 

得到的索引列,如下圖所示。在這里,和大家解釋一下,所謂“從0”開始的索引列,就是一列列名為“索引”,數(shù)據(jù)內(nèi)容從0開始、以1為單位遞增的整數(shù)序列。


 

接下來,我們還需要對索引列進行一下加工。單擊選中索引列,然后依次點擊“轉(zhuǎn)換”-“標準”-“用整數(shù)除”,如下圖所示。


 

點擊“用整數(shù)除”后,彈出“用整數(shù)除”對話框。在“值”下方的輸入框中,輸入數(shù)字“2”,然后點擊“確定”,如下圖所示。


 

點擊“確定”后,請大家注意觀察,索引列中的數(shù)據(jù)發(fā)生了變化,由原來的遞增整數(shù)序列(01、2、3、……),變成了0、0、11、22、3、3……這樣的重復數(shù)據(jù),如下圖所示。


 

有的小伙伴們可能會問,剛才我們添加索引列,然后用整數(shù)除(即用2去除),如果不進行這個操作,可以嗎?

 

答案是不可以!這是必不可少的一步。在本例中,透視列的關鍵一步就在于這個索引列。這是因為,在我們的原始數(shù)據(jù)中,每兩行對應的是同一個ID的通行記錄,也就是說,某一個ID的通行信息保存在兩行之中。因此,我們將遞增的索引列除以2,從而得到00、1、1、2、23、3……這樣的重復2次并且遞增的數(shù)據(jù)(注:如果每一個ID對應三行的數(shù)據(jù)內(nèi)容,則除以3,其余以此類推)。

 

正是有了這樣的索引列,在我們后續(xù)的透視列操作中,才保證每一個ID的每一次出行記錄只對應兩個信息,即一次出行對應一個收費站和一個時間。如果沒有這樣的一個索引列,那么,在后續(xù)的透視列操作中,就會出現(xiàn)錯誤。

 

Step 3  進行透視列操作

單擊選中屬性.1這一列,然后依次點擊“轉(zhuǎn)換”-“透視列”,如下圖所示。這里有一點一定要注意,因為我們是想要將收費站和時間這兩個字段轉(zhuǎn)置到兩列中,所以在進行透視列操作之前,要先選中包含這兩個字段的列,也就是屬性.1列。


 

點擊“透視列”后,彈出“透視列”對話框,如下圖所示。

 

 

我們點擊“值列”下方的下拉菜單,將字段由ID改為數(shù)據(jù),然后點擊展開“高級選項”,在“聚合函數(shù)值”下方的下拉菜單中,選擇“不要聚合”,如下圖所示。

 

 

點擊“確定”之后,就是見證奇跡的時刻了!此時,我們得到的數(shù)據(jù)如下圖所示。

 

 

可以看到,收費站和時間這兩個字段,已經(jīng)放在了新的兩列中,兩列中對應的內(nèi)容也是收費站名稱或者通行時間。另外,我們可以觀察一下數(shù)據(jù)的行數(shù),除表頭字段之外,現(xiàn)在一共是10行數(shù)據(jù)(原始數(shù)據(jù)為20行),并且,每個IDID號、性別、收費站、時間等通行記錄是放置在一行中的。

 

此時,索引列對于后續(xù)的操作沒有用處,我們可以點擊右鍵,選擇“刪除”,將它刪除,刪除之后的數(shù)據(jù)如下圖所示。

 

 

好了,到現(xiàn)在為止,數(shù)據(jù)已經(jīng)符合我們的要求了。接下來我們要做的,就是將數(shù)據(jù)上載回Excel中了。具體的操作步驟為:依次點擊“主頁”-“關閉并上載”-“關閉并上載”即可,如下圖所示。

 

 

上載完成之后,在Excel中得到的數(shù)據(jù)就是我們在本文開頭所展示的那個效果,如下圖所示。


 

小伙伴們,你們學會了嗎?


本文配套的練習課件請加入QQ群:902294808下載。

Excel高手,快速提升工作效率,部落窩教育《一周Excel直通車》視頻和《Excel極速貫通班》直播課全心為你!

掃下方二維碼關注公眾號,可隨時隨地學習Excel

IMG_256

相關推薦:

7個Excel小技巧,提高表格查看效率

Excel運用規(guī)范1:一個單元格只記錄一條信息

快速整理不規(guī)范的Excel表格的7個公式

9條最實用的計算excel中關于日期的公式?。ńㄗh收藏)

版權申明:

本文作者阿碩;同時部落窩教育享有專有使用權。若需轉(zhuǎn)載請聯(lián)系部落窩教育。