VBA代码在数据透视表中的应用
(2011-10-08 14:09:39)
标签:
vba数据透视表文化 |
VBA简介
VBA的全称是Visual Basic for Application,它是Microsoft Visual Basic的应用程序版本,它使EXCEL形成了独立的编程环境,它可以自动执行重复的操作、进行复杂的数据分析对比、可以生成报表和图表、用于生成个性化用户界面、OFFICE组件的协同工作、EXCEL二次开发等等。
EXCEL对象模型:EXCEL的对象代表应用程序中的元素,比如工作簿、工作表、单元格、图表或用户窗体等。这些对象一共有100多个,所有这些对象以分层结构(树根状结构)组织在一起就构成了对象模型。
引用数据透视表:一般来说可以有3种方法,一种是使用名称引用对象——数据透视表的名称,第二种是使用索引引用对象——灵气透视表的索引号,第三种是使用RANGE对象.PIVOTTABLE属性,还有一种是利用对象变量对保留数据透视表对象的引用(Dim Pvt as
Pivottable),
使用数据透视表名称引用的代码:Sheets(“Sheet1).PivotTables(“透视表名称”).RowFields(1).Name。
使用数据透视表序号引用的VBA代码:Sheets(Sheets 1”).PivotTables(1).Name.
使用数据透视表区域的单元格的PIVOTTABLE属性引用数据透视表的VBA代码(,所引用的单元格一定要在引用的数据透视表区域内的,共3种):
Sheets(“Sheets1”).Cells(1,”A”).PivotTable.Name
Sheets(“Sheet1”).Range(“N1”).PivotTable.Name
Sheets(“Sheets1”).Cells(11,14).PivotTable.Name
使用对象变量对数据透视表的引用:
Dim Pvt as PivotTable
Set Pvt = Sheets(“Sheet1”).PivotTables(1)
Pvt.Name
二、利用VBA创建数据透视表
1、通过录制宏得到数据透视表的代码
首先打开录制宏的工具条,在录制宏的工具条上点“录制宏”按钮录制新宏,再在EXCEL工作表中创建一个新的数据透视表后,点停止录制,即可完成一个创建数据透视表的宏代码。
在录制宏产生的VBA代码中,添加字段一般都是用的With/End with结构,结构中的代码以(点.)开头,END WITH结束一个字段的添加。
添加数据字段:AddDataField属性
2、使用”PivottableWizard”方法创建数据透视表。代码如下:
实际情况下修改相应字段和参数等即可。
3、利用PivotCache(数据缓存)对象创建数据透视表
Sub CreatPivotTable2()
SourceData:="数据源!A1:F1044")
Set myPvt = myPvtCa.CreatePivotTable(TableDestination:="")
myPvt.AddFields RowFields:="部门", ColumnFields:="月"
Application.CommandBars("PivotTable").Visible = False
End Sub
需要时根据实际情况修改相应参数或字段等即可。
三、使用虚拟数据字段“DATA”灵活创建数据透视表
Sub CreatPvtWithFunction()
SourceData:=Worksheets("数据源").Range("A1").CurrentRegion)
Set myPvt = myPvtCa.CreatePivotTable(TableDestination:=Worksheets("透视表").Range("A3"))
With myPvt
.AddFields RowFields:="项目", ColumnFields:="Data"
For iMonth = 1 To 3
.AddDataField Field:=myPvt.PivotFields(iMonth & "月份产量"), _Caption:=iMonth & "月份", Function:=xlSum
Next
End With
Set myPvt = myPvtCa.CreatePivotTable(TableDestination:=Worksheets("透视表").Range("F3"))
With myPvt
.AddFields RowFields:="Data", ColumnFields:="项目"
For iMonth = 4 To 6
.AddDataField Field:=myPvt.PivotFields(iMonth & "月份产量"), _Caption:=iMonth & "月份", Function:=xlSum
Next
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False
End Sub
如果在一个数据透视表中有很多数据项的统计为计数,要修改计数和求和的话比较麻烦,可用VBA代码修改,一次完成,非常快捷,代码如下:
Sub ModifyFieldFunction()
myPvtFd.Function = xlSum
Next
End Sub
学习和掌握更多有关EXCEL或OFFICE的知识,请登录http://t.excelhome.net/。在这里,一定会让你找到家的感觉。