VBA实现Excel的数据透视表
创始人
2025-01-15 20:34:39
0

前言

本节会介绍通过VBA的PivotCaches.Create方法实现Excel创建新的数据透视表、修改原有的数据透视表的数据源以及刷新数据透视表内容。
本节测试内容以下表信息为例
在这里插入图片描述


1、创建数据透视表

语法:PivotCaches.Create(SourceType, [SourceData], [Version])
说明:

SourceType:必填参数,可以是以下 XlPivotTableSourceType 常量之一: xlConsolidation、 xlDatabase 或 xlExternal
SourceData:非必填,新数据透视表缓存的数据。
Version:版本,非必填,可以是常量xlPivotTableVersion2000,对应Excel 2000,也可以是xlPivotTableVersion10、xlPivotTableVersion11、xlPivotTableVersion12、xlPivotTableVersion14、xlPivotTableVersion15分别表示Excel 2002、2003、2007、2010、2013

示例:

根据上表内容,在原sheet2上创建一个数据透视表,起始位置为J1,透视表设置行为名称、产品编号,列设置为生产年月,值为销售数量求和,完整的代码如下:

Sub CreatePivot()          ' 声明工作簿、工作表变量     Dim wb As Workbook     Dim ws As Worksheet     ' 声明数据源、透视表目标起始位置、数据透视表变量     Dim dataSource As Range     Dim datePivot As Range     Dim newPivot  As PivotTable          '设置工作簿为当前文件     Set wb = ThisWorkbook     Set ws = ThisWorkbook.Worksheets("Sheet2")          ' 通过A列获取最大行数     Dim lastRow As Long     lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row     ' 定义数据源范围     Set dataSource = ws.Range("A1:F" & lastRow)     ' 定义透视表目的起始位置          ' 创建一个新的数据透视表     Set newPivot = wb.PivotCaches.Create(xlDatabase, dataSource).CreatePivotTable(ws.Range("J1"), "PivotTable123")          ' 定义透视表的行列值     With newPivot         .PivotFields("名称").Orientation = xlRowField         .PivotFields("商品编号").Orientation = xlRowField         .PivotFields("生产年月").Orientation = xlColumnField         With .PivotFields("销售数量")             .Orientation = xlDataField             .Function = xlSum         End With     End With        End Sub 

代码说明:
注意 PivotCaches.Create 是用在workbook后面的方法属性
CreatePivotTable 用来指定创建的透视表的位置以及透视表的名称,若想要在一张新的工作表创建,如想在sheet3中创建,则可以将上述代码中的ws.Range(“J1”)改为ThisWorkbook.Worksheets(“Sheet3”).Range(“A1”),前提是该工作簿中存在Sheet3工作表

在这里插入图片描述

2. 修改数据透视表的数据源

如上例类似,修改已有的数据透视表的数据源,修改为A1:F20,完整的代码如下:

Sub UpdatePivotSourceData()      ' 声明工作簿、工作表变量     Dim wb As Workbook     Dim ws As Worksheet     ' 声明数据源、透视表目标起始位置、数据透视表变量     Dim dataSource As Range     Dim datePivot As Range     Dim pt As PivotTable          '设置工作簿为当前文件     Set wb = ThisWorkbook     Set ws = ThisWorkbook.Worksheets("Sheet2")          ' 设置要修改的数据透视表名称     Set pt = ws.PivotTables("PivotTable123")          ' 修改数据透视表的数据范围     pt.sourceData = ws.Range("A1:F20").Address(True, True, xlR1C1, True)          ' 刷新数据透视表     pt.RefreshTable  End Sub 

在这里插入图片描述

3. 刷新数据透视表

pt.RefreshTable
pt表示对应的数据透视表,如以下代码:

Sub RefreshPivot 	Dim pt As PivotTable 	Dim ws As Worksheet  	Set ws = ThisWorkbook.Worksheets("Sheet2") 	' 设置要修改的数据透视表名称     Set pt = ws.PivotTables("PivotTable123")  	' 刷新数据透视表     pt.RefreshTable      End Sub 

对应的数据透视表名称
在这里插入图片描述

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...