如何用Excel中的VBA来做数据透视表?

想使用VBA编程来做数据透视表,实现相关数据透视表中的功能,代码如何写?
关注者
60
被浏览
103,988

14 个回答

谢邀。自己亲自操作一遍,录成宏,再看看代码就知道怎么写了。不懂的地方按F1看帮助。

提供一份两年前的代码,仅供参考。

Sub 统计汇总()
'written by Allate
'2013-6-20
    Dim FinalRow As Integer, i As Integer
    Dim RowField
    '准备工作
    FinalRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    ActiveSheet.Cells.Clear
    '选定范围,创建透视表
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "生产记录!R1C1:R" & FinalRow & "C12").CreatePivotTable TableDestination:="统计表!R1C1", TableName:="透视表1"
    '设置行标签
    ActiveSheet.PivotTables("透视表1").AddFields RowFields:=Array("客户", "名称", "图号", "工序")
    '设置报表筛选
    With ActiveSheet.PivotTables("透视表1").PivotFields("组别")
        .Orientation = xlPageField
        .Position = 1
    End With
    '设置数值
    With ActiveSheet.PivotTables("透视表1")
        .AddDataField .PivotFields("数量"), " 数量", xlSum
        .AddDataField .PivotFields("单价/元"), " 单价/元", xlAverage
        .AddDataField .PivotFields("小计/元"), " 小计/元", xlSum
        .RowAxisLayout xlTabularRow                                     '以表格格式显示布局
        .PivotFields("组别").CurrentPage = "包装组"
    End With
    '不显示分类汇总
    For Each RowField In ActiveSheet.PivotTables("透视表1").RowFields
        RowField.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)