VBA实现Excel的数据透视表

前言

本节会介绍通过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.mzph.cn/diannao/44458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打卡第8天-----字符串

进入字符串章节了,我真的特别希望把leetcode上的题快点全部都给刷完,我是社招准备跳槽才选择这个训练营的,面试总是挂算法题和编程题,希望通过这个训练营我的算法和编程的水平能有所提升,抓住机会,成功上岸。我现在的这份工作,真的是一天都不想干了,但是下家工作单位还…

Mac虚拟机跑Windows流畅吗 Mac虚拟机连不上网络怎么解决 mac虚拟机网速慢怎么解决

随着技术的发展,很多用户希望能在Mac电脑上运行Windows系统,从而能够使用那些仅支持Windows系统的软件。使用虚拟机软件可以轻松满足这一需求。但是,很多人可能会有疑问:“Mac虚拟机跑Windows流畅吗?”,而且…

【AI前沿】深度学习基础:训练神经网络

文章目录 📑前言一、前向传播与反向传播1.1 前向传播(Forward Propagation)1.2 反向传播(Backpropagation) 二、损失函数和优化算法2.1 损失函数(Loss Function)2.2 优化算法(Optimi…

极狐Gitlab使用

目录 续接上篇:极狐Gitlab安装部署-CSDN博客 1. 关闭注册功能 2. 创建群组 3. 创建用户 5. 邀请成员到群组 6. 设置导入导出项目源 7. 通过gitee导入库 8. 通过仓库URL导入 9. 自创建项目 10. 默认分支main的权限 11. 使用普通用户进入自建库 12. 创建用…

【Linux 线程】线程的基本概念、LWP的理解

文章目录 一、ps -L 指令🍎二、线程控制 一、ps -L 指令🍎 🐧 使用 ps -L 命令查看轻量级进程信息;🐧 pthread_self() 用于获取用户态线程的 tid,而并非轻量级进程ID;🐧 getpid() 用…

matlab仿真 模拟调制(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容,有兴趣的读者请阅读原书) 1.幅度调制 clear all ts0.0025; %信号抽样时间间隔 t0:ts:10-ts;%时间矢量 fs1/ts;%抽样频率 dffs/length(t); %fft的频率分…

国内从事人机交互的团队——浙江工业大学

一、背景 当我们选择一个新的课题后,需要清楚的了解从事该方向的团队都有哪些,这样可以及时跟踪和学习大牛团队的最新进展,以免自己认为的good idea,其实早就已经研究过了。 随着人形机器人的发展,机器人不仅需要在无…

【Windows】实现窗口子类化(基于远程线程注入)

目录 前言 原理解释 完整项目 相关文献 文章出处链接:[https://blog.csdn.net/qq_59075481/article/details/140334106] 前言 众所周知,DLL 注入有多种用途,如热修补、日志记录、子类化等。本文重点介绍使用 DLL 注入对窗口进行子类化。…

GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION

文章目录 题目摘要引言方法实验消融 题目 Gollie:注释指南改进零样本信息提取 论文地址:https://arxiv.org/abs/2310.03668 摘要 大型语言模型 (LLM) 与指令调优相结合,在泛化到未见过的任务时取得了重大进展。然而,它们在信息提…

又上热搜!曝iPhone 16将支持40W快充

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 7月9日晚,微博话题“iPhone16系列或将支持40W快充”上了热搜榜,这已经是iPhone 16系列第N次上热搜了。 据爆料,iPhone 16系列充电功率将提升至40W,并且…

米家立式学习灯怎么样?书客、米家、孩视宝三款护眼大路灯巅峰PK!

米家立式学习灯怎么样?不知从什么时候开始,青少年成为了近视重灾区,主要促成近视的原因有长时间接触电子产品、学习时的不正确姿势、不良的灯光环境等,除了减少电子产品的使用以及多室外活动之外,剩下的就是室内孩子经常学习的光…

全球首款集成GPT-4o的智能眼镜AirGo Vision:AI眼镜的未来

引言 在人工智能和大模型技术迅猛发展的今天,AI硬件产品逐渐走入人们的生活。继Meta Ray-Ban智能眼镜之后,Solos公司在最近的香港智能眼镜峰会上发布了全球首款集成GPT-4o的智能眼镜AirGo Vision。本文将深入探讨这款AI智能眼镜的功能、技术特点以及其在…

侯捷C++面向对象高级编程(下)-2-non-explicit one argument constructor

1.构造函数 构造函数: Fraction(int num, int den 1) 初始化分子和分母,允许指定分子 num 和可选的分母 den。默认情况下,分母为 1。 加法运算符重载: Fraction operator(const Fraction& f) 重载了加法运算符 。这使得两个 Fraction 对象可以通过 …

Qt 异步实现事件的定时执行 - QTimer和QThread的联合使用

异步实现事件的定时执行 - QTimer和QThread的联合使用 引言一、核心源码二、其信号和槽函数简述三、定时器及其moveToThread简述 引言 在 Qt 中,如果想要定时执行某些事件或函数,通常会使用 QTimer 类。QTimer 允许设置一个时间间隔,当这个时…

echarts使用自定义图形实现3D柱状图

先看下效果吧 实现思路 使用graphic创建并注册自定义图形。根据每组的数据值,得到一个对应的点,从点出发用canvas绘制一组图形,分别为 顶部的菱形 const CubeTop echarts.graphic.extendShape({buildPath: function (ctx, shape) {const c1…

NVIDIA良心给显卡免费升级,只为挨更多的骂

起猛了,还真的以为 NVIDIA 良心发现了。 众所周知,英伟达对于咱们普通游戏玩家向来不屑一顾。只因为游戏业务在 NVIDIA 收入中占比较少。 在最新的 40 系显卡 RTX 4070 Ti Super 显卡中,NVIDIA悄悄给它来了一次核心「升级」,将原…

ARM学习(29)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择

ARM学习(28)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择 1、多种启动方式介绍 IMX1166 支持多组flexSPI 引脚启动,FlexSPI1以及FlexSPI2,通过boot cfg可以切换FlexSPI得实例。 每个实例又支持多组引脚,总共…

LiteOS增加执行自定义源码

开发过程注意事项: 源码工程路径不能太长 源码工程路径不能有中文 一定要关闭360等杀毒软件,否则编译的打包阶段会出错 增加自定义源码的步骤: 1.创建源码目录 2. 创建源文件 新建myhello目录后,再此目录下再新建源文件myhello_demo.c 3. 编…

程序员学长 | PyCaret,一个超强的 python 库

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。 原文链接:PyCaret,一个超强的 python 库 今天给大家分享一个超强的 python 库,PyCaret。 https://github.com/pycaret/pycaret 简介 …

[论文笔记]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL

引言 今天带来又一篇RAG论文笔记:RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL。 检索增强语言模型能够更好地适应世界状态的变化并融入长尾知识。然而,大多数现有方法只能从检索语料库中检索到短的连续文本片段&#xff0…