EXCEL破冰之旅

1     背景

EXCEL用於平常數據分析的工具中,最便利而且最強大的莫屬透視表了。由於透視表對原始數據有必定的要求,因此本次的破冰之旅也將把焦點放在如何整理基礎數據這個方面。html

1.1  初識透視表

若是有人告訴你,下面這兩個看起來很高大上的報表,其實只須要在EXCEL裏面用鼠標點幾下就完成了。你是否是就已經感覺到透視表的強大了?數據庫

clip_image002[4]

clip_image004[4]

1.2  透視表的數據要求

其實數據透視表對原始數據的要求並不苛刻,只要不是奇形怪狀的數據就已經知足要求了。好比剛纔的兩個透視表,原始數據片斷以下圖。數組

clip_image006[4]

簡單的說,原始數據在格式上須要知足:ide

Ø  第一行必須是標題,且不能有空白標題或重複標題;函數

Ø  單元格格式正確,特別是日期和數字,不能用文本類型替代;工具

Ø  橫平豎直,不能有合併單元格等異形樣式;spa

Ø  通常狀況下,全部數據都包含在一個工做表內;且使用簡單的一維表格式;3d

 

那麼,若是你的原始數據不知足上面的要求,就須要進行一些轉換。下面,咱們就介紹一些經常使用的數據轉換方法。orm

2     格式化時間

使用Excel處理數據的一個基本原則是,單元格格式正確。當咱們須要分析的數據中包括日期或者時間的時候,這個原則尤爲重要,必定不要使用文本或者數字格式來替代。由於Excel內部提供了不少針對日期的函數,能夠極大的簡化數據分析工做。可是,若是咱們用了文本格式來保存日期,那麼這些函數將沒法使用。htm

clip_image008[4]

 

理想是豐滿的,現實是骨感的。在咱們處理數據的過程當中,大量的原始數據由於各類各樣奇葩的緣由,選擇了用文本或者數字的方式保存日期數據。常見的幾種格式以下圖所示:

clip_image010[4]

2.1  數據分列

若是隻是須要對日期部分進行格式化,那簡單的數據分列功能就能夠實現咱們的需求。在選中原始數據列的前提下,依次點擊數據 分列 分隔符號 下一步,以下圖:

 

clip_image012[4]

在文本分列嚮導第3步,選中日期YMD格式,而後點擊完成,以下圖:

 

 

clip_image014[4]

 

最終結果已經成功轉換爲日期格式,以下圖:

clip_image016[4]

2.2  公式轉換

數據分列的方法,僅能處理日期格式的數據。若是咱們須要格式化日期時間的數據,可使用公式來實現格式化。下面是一個經常使用的公式,能夠把yyyymmddhhmiss格式的原始文本(或科學計數法)轉換成yyyy-mm-dd hh:mi:ss日期時間格式,效果以下圖:

=TEXT(G2,"0000-00-00 00!:00!:00")+0

clip_image018[4]

 

爲了可以正確的顯示日期時間格式,還須要把單元格的格式設置成咱們須要的日期時間格式,以下圖:

clip_image020[4]

3     拆分合並單元格

有時候,數據錄入人員爲了視覺效果會進行單元格的合併。這種合併過的數據表格,是沒辦法直接用來生成數據透視表的。

clip_image022[4]

 

如上圖,左邊的業務員字段進行了合併單元格處理,咱們必須把這個字段轉換成右邊這種格式才方便進行進一步分析。

 

怎麼破?難道取消合併單元格後一個一個的拷貝嗎?固然不用,只須要簡單幾個操做,就能實現這個要求。

 

在保證G列(業務員字段)被選中的前提下,依次點擊開始 取消單元格合併,以下圖

 

clip_image024[4]

 

取消單元格合併以後的數據以下圖,每一個業務員的名字僅在第一行內出現,其餘行是空白。

clip_image026[4]

 

在保證G列(業務員字段)被選中的前提下,按快捷鍵F5,彈出定位窗口,點擊定位條件。。。按鈕,在彈出的窗口中,依次點擊空值 肯定,以下圖

clip_image028[4]

 

不要點擊任何其餘地方,直接在公式編輯框裏面輸入G3單元格的公式 =G2,最關鍵的步驟,同時按下 Ctrl + Enter,以下圖

clip_image030[4]

 

       空白單元格自動複製了對應的數據。以下圖,完成數據轉換。

clip_image032[4]

 

4     查找單個值(VLOOKUP函數)

有以下圖的原始訂單信息,以及業務人員的ID/名稱對應關係表。

clip_image034[4]

 

但願獲得下圖的結果,要求是:

1)        根據業務員ID查找對應的名字;

2)        把銷售金額進行分段標示;

clip_image036[4]

 

這樣的需求,可不能傻乎乎的一個一我的肉查找替換。用一個函數簡單搞定。

 

VLOOKUP是一個查找函數,給定一個查找的目標,它就能從指定的查找區域中查找返回想要查找到的值。它的基本語法爲:

      VLOOKUP查找目標查找範圍,返回值的列數,精確OR模糊查找)

4.1  精確查找

如圖,實現對業務員ID和名稱的精確查找

clip_image038[4]

公式C2=VLOOKUP(B2,$J$1:$K$4,2,0)

參數說明:

Ø  查找目標VLOOKUP(B2,$J$1:$K$4,2,0):就是你指定的查找的內容或單元格引用。圖中B列的業務員ID就是查找目標。咱們要根據「業務員ID」在J列進行查找。

Ø  查找範圍VLOOKUP(B2,$J$1:$K$4,2,0):指定了查找目標,若是沒有說從哪裏查找,EXCEL確定會很爲難。因此下一步咱們就要指定從哪一個範圍中進行查找。VLOOKUP的這第二個參數能夠從一個單元格區域中查找,也能夠從一個常量數組或內存數組中查找。本例中要在J1:K4這個區域中進行查找,而且使用了$J$1這樣的絕對引用方式,保證公式在縱向進行復制的時候保持不變。

Ø  返回值的列數VLOOKUP(B2,$J$1:$K$4,2,0):這是VLOOKUP3個參數。它是一個整數值。它怎麼得來的呢。它是「返回值」在第二個參數給定的區域中的列數。本例中咱們要返回的是「業務員」,它是第二個參數查找範圍J1:K4的第2列。這裏必定要注意,列數不是在工做表中的列數(不是第K列),而是在查找範圍區域的第幾列。

Ø  精確OR模糊查找VLOOKUP(B2,$J$1:$K$4,2,0):,最後一個參數是決定函數精確和模糊查找的關鍵。精確即徹底同樣,模糊即包含的意思。參數若是指定值是0FALSE就表示精確查找,而值爲1 TRUE時則表示模糊。

4.2  模糊查找

模糊查找最主要的一個場景是,對金額這一類的數據進行分段。以下圖,要把銷售金額分紅幾個區間,而後對區間內的數據進行彙總。

clip_image040[4]

公式E2=VLOOKUP(D2,$M$1:$N$6,2,1)

最後一個參數指定爲1 TRUE時表示模糊查找。

重要:在進行模糊查找時,查找範圍必須進行升序排列。

 

5     查找多個值(JOIN操做)

以下圖,原始數據存放在兩個sheet裏面。左邊的是訂單數據,只記錄了產品ID;右邊的是產品信息,包含了產品的詳細信息。

 

clip_image042[4]

 

如今想獲得以下圖的結果,即兩個sheet的數據組合在一塊兒,把產品的詳細信息追加在訂單信息以後。若是是在數據庫裏面用SQL語句,這個是很簡單的任務,可是若是是在Excel裏面又如何實現?

clip_image044[4]

 

5.1  VLOOKUP的擴展

回憶一下VLOOKUP函數的第三個參數是什麼?第三個參數是返回值在查找範圍內的列數

 

通常狀況下,咱們用一個固定的數字來指定這個列數。可是在咱們這個案例中,若是用固定數字的話,就須要編寫多個VLOOKUP函數才能返回多個值。有沒有變通的辦法,只寫一次公式?有,具體思路是用變量代替常量。

clip_image046[4]

如上圖,得到產品名稱的公式寫成這樣D2=VLOOKUP($B2,join_2!$A$1:$C$6,COLUMN(B1),0)

 

       上述公式的兩個變更,解釋以下

Ø  $B2是查找目標(產品ID),由於這個公式要在橫向和縱向都進行復制,因此用了$符號指定B列的絕對引用,表示在橫向複製的時候B列引用不變;

Ø  COLUMN函數用於返回指定的列數,由於產品名稱在查找範圍的B列(第2列),因此用B1來指示。當進行橫向複製的時候,這個相對引用會自適應變化;

 

D2的函數公式進行橫向和縱向複製以後,結果以下,知足了這個案例的需求。

clip_image048[4]

5.2  Microsoft Query

剛纔的辦法很好很強大,可是有點麻煩而且不夠靈活,有沒有更方便的辦法?既然這樣問,那就確定是有的啦。一個可能你沒有據說過,可是很是強大的EXCEL功能,名字就很高大上。Microsoft Query,主要做用就是在EXCEL裏面實現SQL語句的功能。

 

這個功能藏在哪裏?請按圖索驥,依次點擊:數據 –- 自其餘來源 來自Microsoft Query

clip_image050[4]

 

在彈出的窗口中選擇Excel做爲數據源,如圖依次點擊:Excel Files* -- 肯定

clip_image052[4]

 

在彈出的窗口中選擇包含了原始數據的Excel文件,而後肯定

clip_image054[4]

 

在彈出的窗口中,依次把包含原始數據(訂單信息,產品信息)的sheet添加到查詢中,以下圖。

clip_image056[4]

 

把兩個sheet都添加完成後,點擊關閉按鈕,以下圖

clip_image058[4]

 

訂單信息和產品信息,是經過產品ID來進行關聯的,因此咱們把這兩個字段關聯起來。先選擇左邊的產品ID」而後拖到右邊的產品ID」上,以下圖

clip_image060[4]

 

把咱們須要保留的字段拖到下面的窗口,這個例子中,咱們選擇左邊的全部字段,和右邊的產品名稱和單價字段,完成以後以下圖

clip_image062[4]

 

這裏能夠對join進行調整,EXCEL提供了left join, right join, inner join 三種鏈接模式。本例中使用的是默認的inner join模式。查詢完成以後,能夠選擇把查詢結果返回Excel中,操做以下圖:

clip_image064[4]

clip_image066[4]

 

新工做表的內容以下圖:

clip_image067[4]

6     多維錶轉換一維表

數據錄入人員不少時候爲了視覺效果,會使用二維/多維結構的數據表格。這種格式的數據,肉眼看起來比較清晰,可是不利於進一步數據處理。以下圖,業務人員錄入的多個運營商提供的不一樣套餐在不一樣地區的費率信息表。

clip_image069[4]

 

       上圖的多維表必須轉換成簡單的一維表,才能用於後續的數據處理中。一維表格式以下圖:

clip_image071[4]

 

數據量比較大的時候,人肉拷貝耗時耗力,這個時候就要用下面介紹的「多重合並計算數據區域技巧來實現自動轉換了。

 

依次按下組合鍵 Alt + D + P,打開數據透視表嚮導。而後選中多重合並計算數據區域以下圖

clip_image073[4]

 

接下來選中自定義頁字段,以下圖

clip_image075[4]

 

在嚮導第三步中,依次進行這些操做:選定區域(選中具體數據部分) 添加(把選定區域添加到全部區域) -- 設置頁字段數目爲1 – 給這個區域設置頁字段爲移動,以下圖:

clip_image077[4]

 

重複上面的步驟,把其餘兩部分原始數據都加入,而且分別設置頁字段爲「聯通電信,以下圖

clip_image079[4]

 

       選擇在新工做表中生成一個數據透視表,以下圖

clip_image081[4]

 

新生成的數據透視表以下圖。若是對透視表的結構進行一下調整,看起來就更像是原始數據的結構了。最關鍵的步驟,雙擊紅色的總計單元格,以下圖:

clip_image083[4]或者

clip_image085[4]

 

雙擊總計單元格以後,會在新的工做表中生成一維表的數據,對錶頭內容和位置進行調整以後,就獲得咱們須要的最終格式。

clip_image087[4]

 

7     參考資料

Excel 2010數據透視表應用大全》http://item.jd.com/11154634.html

《誰說菜鳥不會數據分析》http://item.jd.com/11123672.html

相關文章
相關標籤/搜索