分享

VBA中数据透视表应用 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/533.html,VBA交流群273624828。

这几天写代码用到了数据透视表,那这节我们就来看下怎样用VBA来做一个简单的数据透视表。

有一个简单的表,表头里有股票代码,持股的机构名称、机构属性、持股数量等,现在要用数据透视表将该表做一个统计,行标签是股票代码,列标签是机构属性,要对持股数量做求和,对机构属性做计数,看代码:

Sub Macro1()
Dim PTcache As PivotCache
Dim PT As PivotTable
Sheet2.Cells.Clear
Set PTcache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("Sheet1").Range("A1:I338"), Version:=xlPivotTableVersion12)   '数据区域
Set PT = PTcache.CreatePivotTable(TableDestination:=Sheets("Sheet2").Range("A1"), TableName:="数据透视表1", DefaultVersion:=xlPivotTableVersion12)       '目标位置
With PT.PivotFields("代码")  '字段放置在行标签
.Orientation = xlRowField
.Position = 1
End With
With PT.PivotFields("机构属性") '字段放置在列标签
.Orientation = xlColumnField
.Position = 1
End With
With PT.PivotFields("持股总数(万股)")
.Orientation = xlDataField  '字段放置在数据区域
.Function = xlSum           '统计方式是求和
.Position = 1               '排在第1位,一般不需要这个,顺序来就可以了
End With
With PT.PivotFields("机构属性")
.Orientation = xlDataField
.Function = xlCount          '统计方式是计数
.Position = 2
End With
End Sub

做透视表可以录制宏,但是会有一定的问题,比如说这里我的列标签是机构属性,而我数据区域又要对每个代码对应的机构属性进行计数,当你运行录制的宏时会发现列标签的机构属性不见了,如果录制的代码出现这种问题那就自己动手写吧。上面的代码标注的很清楚了,第1行是指定数据区域的,第2行是指定表位置的。下面将“代码”字段放到行标签,再下面将“机构属性”放到列标签,里面的Position指的是一个标签里有多个字段时该字段的位置,如果你是顺序写的这个属性就无所谓了。再下面是数据区域的字段,Function属性是指明统计的方式,常用的如下

计算类型
求和 xlsum
计数 xlcount
平均值 xlaverage
乘积 xlproduct
最大值 xlmax
最小值 xlmin
数值计数 xlcountnum

先讲这些,本节示例文件下载地址:http://pan.baidu.com/s/1dDgrwS5

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多