Excel數據分析入門-數據透視表

處理數量較大的數據時,通常分爲數據獲取、數據篩選,以及結果展現幾個步驟。在 Excel 中,咱們能夠利用數據透視表(Pivot Table)方便快捷的實現這些工做。php

本文首先手把手的教你如何在 Excel 中手動構建一個基本的數據透視表,最後用 VBA 展現如何自動化這一過程。html

注: 數據庫

  • 本文基於 Excel 2016 for Mac 完成,個別界面和 Windows 版略有差別
  • 若是要完成 VBA 的部分,Excel for Mac 須要升級到 15.38 版本以上
  • Excel 2007 及以後的頂部 Ribbon 菜單,文中簡稱爲 Ribbon
  • 開啓「開發工具」菜單的方法也請自行了解

I. 源數據

Excel 提供了豐富的數據來源,咱們能夠從 HTML、文本、數據庫等處獲取數據。windows

這個步驟本文不展開討論,如下是咱們做爲分析來源的工做表數據:bash


II. 建立數據透視表

  • 此處將工做表重命名爲sheet1
  • 首先確保表格第一行是表頭
  • 點擊表中任意位置
  • 選中 Ribbon 中的「插入」
  • 點擊第一個圖標「數據透視表」,出現「建立數據透視表」對話框

注意觀察對話框中的各類選項,這裏咱們都採用默認值編輯器

點擊「肯定」後,一個空的數據透視表出如今了新工做表中:ide


III. 數據透視表中的字段

  • 在「數據透視表生成器」菜單中,選擇「球隊、平、進球、失球、積分、更新日期」幾個字段


  • 將「平」拖放至「行」列表中的「球隊」上方;表示在「平局」的維度上,嵌套(nesting)的概括了「球隊」的維度
  • 將「更新日期」拖放至「篩選器」列表中;表示能夠根據更新日期來篩選顯示錶格數據


  • 分別對當前「值」列表中的幾個字段,點擊其右側的i圖標
  • 由於本例中無需計算其默認的「求和」,故將這幾個字段的「彙總方式」都改成「平均值」


  • 暫時關閉「數據透視表生成器」
  • 該窗口隨後能夠用「字段列表」按鈕從新打開


此時一個基本的數據透視表已經成型工具


IV. 增長自定義字段

有時基本的字段並不能知足分析的須要,此時就能夠在數據透視表中插入基於公式計算的自定義字段。開發工具

下面用不一樣的方法加入兩個自定義字段:ui

4.1 簡單運算的公式

首先簡單計算一下各隊的場均進球數:

  • 點擊數據透視表中的任意位置,以激活「數據透視表分析」 Ribbon 標籤
  • 點擊「字段、項目和集」按鈕,在彈出的下拉菜單中選擇「計算字段」
  • 「插入計算字段」對話框會出現
  • 在「名稱」中填入「場均進球」
  • 在「字段」列表中分別雙擊「進球」和「場次」
  • 以上兩個字段會出如今「公式」框中,在它們中間鍵入表示除法的斜槓/
  • 也就是說,此時「公式」部分爲 =進球/場次


  • 點擊「肯定」關閉對話框,數據透視表中出現了新的「求和/場均進球」字段
  • 按照以前的方法,將字段的彙總方式改成「平均值」,肯定關閉對話框


4.2 調用 Excel 公式

再簡單的評估一下球隊的防守質量,這裏咱們假設以以下 Excel 公式判斷:

= IF(淨勝球>=0,2,1)

防守還不錯的取 2,不佳的則標記爲 1。

  • 按照剛纔的方法新建一個計算字段
  • 將上述公式填入「公式」框


  • 將字段的彙總方式改成「計數」 -- 雖然在此處並沒有太多實際意義

V. 利用切片器過濾數據

除了能夠在「數據透視表生成器」中指定若干個「過濾器」,切片器(Slicers)也能夠用來過濾數據,使分析工做更清晰化。

切片器的建立很是簡單:

  • 在 Ribbon 中點擊「插入切片器」按鈕
  • 在字段列表中選擇「勝」、「負」
  • 兩個切片器就出如今了界面中


  • 點擊切片器中的項目就能夠篩選
  • 結合 ctrl 鍵能夠多選


VI. 成果

至此,咱們獲得了一個基於源數據的、能夠自由組合統計維度、能夠用多種方式篩選展現的數據透視表。

能夠在 Ribbon 的「設計」菜單中選擇預設的樣式等,本文不展開論述。


以上就是建立數據透視表的基本過程。

VII. 自動化建立

基本的數據透視表的建立和調整並不複雜,但若是有不少相似的重複性工做的話,使用一些簡單的 VBA 來自動化這一過程,將極大提高工做的效率。

本例中使用 VBA 腳本完成與上述例子同樣的任務,對於 VBA 語言僅作簡單註釋,想更多瞭解能夠自行查閱官方的文檔等

7.1 一鍵生成

此處咱們放置一個按鈕在源數據所在的數據表,用於每次點擊自動生成一個數據透視表。

  • 在 Ribbon 的「開發工具」中點擊按鈕
  • 在界面任意位置框選一個按鈕的尺寸
  • 釋放鼠標後彈出「指定宏」對話框
  • 此處咱們將「宏名稱」框填入 ThisWorkbook.onCreatePovit
  • 「宏的位置」選擇「此工做簿」
  • 點擊"編輯"後關閉對話框


  • 將按鈕名稱改成「一鍵生成透視表」


7.2 腳本編寫

  • 點擊 Ribbon 中「開發工具」下面第一個按鈕「Visual Basic」
  • 在出現的「Visual Basic」編輯器中,選擇左側的「ThisWorkbook」類目
  • 在右側編輯區貼入下面的代碼


Sub onCreatePovit()
    Application.DisplayAlerts = False

    ' 聲明變量 Dim sheet1 As Worksheet Dim pvtTable As PivotTable Dim pvtField As PivotField Dim pvtSlicerCaches As SlicerCaches Dim pvtSlicers As slicers Dim pvtSlicer As Slicer ' 刪除可能已存在的透視表
    Dim existFlag As Boolean
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name = "pivot1" Then existFlag = True: Exit For
    Next
    If existFlag = True Then
        Sheets("pivot1").Select
        ActiveWindow.SelectedSheets.Delete
    End If

    ' 初始化 Set sheet1 = ActiveWorkbook.Sheets("sheet1") Set pvtSlicerCaches = ActiveWorkbook.SlicerCaches ' 指定數據源
    sheet1.Select
    Range("A1").Select

    ' 建立透視表 Set pvtTable = sheet1.PivotTableWizard ActiveSheet.Name = "pivot1" ' 指定行和列
    pvtTable.AddFields _
        RowFields:=Array("平", "球隊"), _
        ColumnFields:="Data"

    ' 指定數據字段 Set pvtField = pvtTable.PivotFields("失球") pvtField.Orientation = xlDataField pvtField.Function = xlAverage pvtField.Name = "平均值/失球" Set pvtField = pvtTable.PivotFields("進球") pvtField.Orientation = xlDataField pvtField.Function = xlAverage pvtField.Name = "平均值/進球" Set pvtField = pvtTable.PivotFields("積分") pvtField.Orientation = xlDataField pvtField.Function = xlAverage pvtField.Name = "平均值/積分" ' 指定計算字段
    pvtTable.CalculatedFields.Add Name:="場均進球", Formula:="=進球/場次"
    Set pvtField = pvtTable.PivotFields("場均進球")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlAverage
    pvtField.Name = "平均值/場均進球"
    pvtTable.CalculatedFields.Add Name:="防守質量", Formula:="= IF(淨勝球>=0,2,1)"
    Set pvtField = pvtTable.PivotFields("防守質量")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlCount
    pvtField.Name = "計數/防守質量"

    ' 指定切片器 Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "勝", "勝_" & ActiveSheet.Name).slicers Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 300, 400) Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "負", "負_" & ActiveSheet.Name).slicers Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 350, 450) ' 指定過濾器
    Set pvtField = pvtTable.PivotFields("更新日期")
    pvtField.Orientation = xlPageField

    Application.DisplayAlerts = True
End Sub複製代碼

7.3 運行程序

回到界面中,每次點擊按鈕就會在新工做表中生成結構和以前例子一致的數據透視表


VIII. 總結

  • 本文簡單的展現了在 Excel 中建立透視表的過程,以及其篩選、展現數據的方式
  • 經過 VBA 能夠完成和手動建立同樣甚至更多的功能,並大大提升工做效率

IX. 解決 windows 版本中沒法打開 VBA 編輯器

若是遇到此類問題,可按如下步驟嘗試解決:

  1. download vbe6ext.OLB from http://www.121down.com/soft/softview-63611.html
  2. copy vbe6ext.OLB to C:\Program Files\Common Files\microsoft shared\VBA\VBA6and C:\Program Files\Common Files\microsoft shared\VBA\VBA7and C:\Program Files\Common Files\microsoft shared\VBA\VBA7.1

X. 參考資料

  • https://support.office.com/client/Import-and-analyze-data-ccd3c4a6-272f-4c97-afbb-d3f27407fcde#ID0EAABAAA=PivotTables
  • https://msdn.microsoft.com/zh-cn/library/office/hh243933(v=office.14).aspx
  • https://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables
  • https://zhidao.baidu.com/question/52748104.html
  • http://www.databison.com/pivot-table-vba-vba-to-read-modify-a-pivot-table-in-excel/
  • https://msdn.microsoft.com/en-us/vba/excel-vba/articles/pivotfield-object-excel
  • http://blog.sina.com.cn/s/blog_54044c930100jg9p.html
  • http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=152:excel-pivot-tables-insert-calculated-fields-a-calculated-items-create-formulas-using-vba&catid=79&Itemid=475
  • http://www.databison.com/slicer-vba-code-create-change-or-modify-a-pivot-table-slicer-using-vba/
  • https://social.technet.microsoft.com/Forums/office/en-US/1d3e9aa0-2069-4f7b-b6cf-c47e00d637f5/vbe6extolb-could-not-be-loaded?forum=officeitproprevious


(end)
相關文章
相關標籤/搜索