VBA实现Excel的数据透视表

embedded/2024/9/23 9:31:42/

前言

本节会介绍通过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 WorkbookDim ws As Worksheet' 声明数据源、透视表目标起始位置、数据透视表变量Dim dataSource As RangeDim datePivot As RangeDim newPivot  As PivotTable'设置工作簿为当前文件Set wb = ThisWorkbookSet ws = ThisWorkbook.Worksheets("Sheet2")' 通过A列获取最大行数Dim lastRow As LonglastRow = 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 = xlColumnFieldWith .PivotFields("销售数量").Orientation = xlDataField.Function = xlSumEnd WithEnd WithEnd Sub

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

在这里插入图片描述

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

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

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

在这里插入图片描述

3. 刷新数据透视表

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

Sub RefreshPivotDim pt As PivotTableDim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet2")' 设置要修改的数据透视表名称Set pt = ws.PivotTables("PivotTable123")' 刷新数据透视表pt.RefreshTableEnd Sub

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


http://www.ppmy.cn/embedded/58240.html

相关文章

发表EI会议论文-对考研生和研究生都有好处!

EI论文对考研和保研的帮助主要体现在以下几个方面: 对考研的帮助 1.复试加分:在考研过程中,复试阶段是关键,拥有EI论文可以证明考生具备一定的科研能力,给考官留下深刻印象,有助于提高复试通过率。 2.学…

谷粒商城----通过缓存和分布式锁获取数据。

高并发下缓存失效的问题 高并发下缓存失效的问题--缓存穿透 指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的不写入缓存,这将导致这个不存在的数据每次请求…

go获取正在运行的函数并及时捕获panic

Go 语言中,panic 是一种运行时错误,它会导致当前 goroutine 立即停止执行,并开始逐层向上返回,直到被 recover 捕获或者程序崩溃。panic 通常用于异常情况,比如程序遇到了无法恢复的错误。 捕获 panic 的主要作用包括…

Unity3D 资源管理YooAsset原理分析与详解

引言 Unity3D 是一款广泛应用于游戏开发、虚拟现实(VR)、增强现实(AR)等领域的强大游戏开发引擎。在开发过程中,资源管理是一项至关重要的任务,它直接影响到游戏的性能和用户体验。YooAsset 是一个基于 Un…

软件运行次数

题目: 实现一个验证程序运行次数的小程序,要求如下: 当程序运行超过3次时给出提示:本软件只能免费使用3次,欢迎您注册会员后继续使用~程序运行演示如下: 第一次运行控制台输出:欢迎…

VirtualBox 安装 Ubuntu Server24.04

环境: ubuntu-2404-server、virtualbox 7.0.18 新建虚拟机 分配 CPU 核心和内存(根据自己电脑实际硬件配置选择) 分配磁盘空间(根据自己硬盘实际情况和需求分配即可) 设置网卡,网卡1 负责上网&#xff0c…

找不到msvcr120.dll无法继续执行代码的原因分析及解决方法

我们可以使用一种科学的方法解决msvcr120.dll丢失的问题。这是由于日常使用电脑时的不当操作,可能会导致一些dll文件的丢失。对于这种情况,我们可以谨慎地修复来解决。 一、首先让我们了解msvcr120.dll是什么及重要性 msvcr120.dll 是微软公司开发的Vis…

Apache Seata应用侧启动过程剖析——RM TM如何与TC建立连接

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata应用侧启动过程剖析——RM & TM如何与TC建立连接 前言 看过官网 README 的第…