VBA中数据透视表应用 图文

2016年12月26日23:42:01VBA中数据透视表应用 图文已关闭评论 12,036 views
微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com

 

这几天写代码用到了数据透视表,那这节我们就来看下怎样用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

 

表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页