创建数据透视表

Excel 中最强大的功能之一是使用数据透视表对数据进行排序和分析。如果你了解数据透视表与数据透视表的关系以及如何引用和使用表的不同部分,则使用 VBA 创建和操作数据透视表会更容易。

在最基本的情况下,你的源数据是 Worksheet 上的数据区域。该数据区必须标识数据列,标题行作为范围中的第一行。创建数据透视表后,用户可以随时查看和更改源数据。但是,更改可能不会自动或立即反映在数据透视表本身中,因为有一个称为数据透视缓存的中间数据存储结构直接连接到数据透视表本身。

StackOverflow 文档

如果需要多个数据透视表,则基于相同的源数据,可以将数据透视缓存重新用作每个数据透视表的内部数据存储。这是一种很好的做法,因为它可以节省内存并减少用于存储的 Excel 文件的大小。

StackOverflow 文档

例如,要根据上图中显示的源数据创建数据透视表:

Sub test()
    Dim pt As PivotTable
    Set pt = CreatePivotTable(ThisWorkbook.Sheets("Sheet1").Range("A1:E15"))
End Sub

Function CreatePivotTable(ByRef srcData As Range) As PivotTable
    '--- creates a Pivot Table from the given source data and
    '    assumes that the first row contains valid header data
    '    for the columns
    Dim thisPivot As PivotTable
    Dim dataSheet As Worksheet
    Dim ptSheet As Worksheet
    Dim ptCache As PivotCache
    
    '--- the Pivot Cache must be created first...
    Set ptCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                                                  SourceData:=srcData)
    '--- ... then use the Pivot Cache to create the Table
    Set ptSheet = ThisWorkbook.Sheets.Add
    Set thisPivot = ptCache.CreatePivotTable(TableDestination:=ptSheet.Range("A3"))
    Set CreatePivotTable = thisPivot
End Function

参考 MSDN 数据透视表对象