VBA学习之关于数据透视表的应用
工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法。
学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB来的。
Sub 出库数据一键生成数据透视表()
'先判定sheet表名称是否正确
If ActiveSheet.name = "出库" Then
MsgBox "这个是出库数据,请继续!!" Dim name As String
Dim arr As Variant
Dim count, n As Long '注意:此程序专门用于ABC出库数据,sheet表名称必须为"出库(发货)" '格式必须为 业务员-日期-购货单位-产品名称-规格型号-单位-基本单位实发数量-件数 '程序会自动筛选你想要的产品的信息并建立新的sheet表,自动生成数据透视表。 '=============================================
'= 程序作者:clyzly =
'= 有问题联系:QQ76601149 =
'=============================================
'Application.ScreenUpdating = False ' Cells.Replace What:="(黑龙江)", Replacement:="", LookAt:=xlPart, SearchOrder _
' :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Worksheets.Add after:=ActiveSheet
ActiveSheet.name = "出库数据汇总总表" '自动生成数据透视表 name = "出库数据汇总总表" '给要建立的数据透视表命个名字 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Worksheets("出库").UsedRange, _
Version:=xlPivotTableVersion10).CreatePivotTable TableDestination:=Range("A3"), TableName:="name", DefaultVersion:=xlPivotTableVersion10 ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("name").PivotFields("产品名称")
.Orientation = xlColumnField
.Position =
End With
With ActiveSheet.PivotTables("name").PivotFields("业务员")
.Orientation = xlRowField
.Position =
End With
' With ActiveSheet.PivotTables("name").PivotFields("购货单位")
' .Orientation = xlRowField
' .Position = 3
' End With
ActiveSheet.PivotTables("name").AddDataField ActiveSheet.PivotTables("name").PivotFields("件数"), "求和项:件数", xlSum
ActiveSheet.PivotTables("name").PivotFields("业务员").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False) With ActiveSheet.PivotTables("name").PivotFields("业务员")
.PivotItems("XX").Visible = False
.PivotItems("XX").Visible = False
End With For Each pvtitem In ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems
If pvtitem.name = "XXA" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXA").Position =
ElseIf pvtitem.name = "XXB" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXB").Position =
ElseIf pvtitem.name = "XXC" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXC").Position =
ElseIf pvtitem.name = "XXD" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXD").Position =
ElseIf pvtitem.name = "XXE" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXE").Position =
ElseIf pvtitem.name = "XXE" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXF").Position =
ElseIf pvtitem.name = "XXF" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXG").Position =
ElseIf pvtitem.name = "XXG" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXH").Position =
ElseIf pvtitem.name = "XXH" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXJ").Position =
ElseIf pvtitem.name = "XXJ" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXK").Position =
ElseIf pvtitem.name = "XXK" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXL").Position =
ElseIf pvtitem.name = "XXE" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXE").Position =
ElseIf pvtitem.name = "XXL" Then
pvtitem.Visible = True
ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXL).Position =
Else
pvtitem.Visible = False
End If
Next Application.ScreenUpdating = True Else
MsgBox "sheet表名称不对吧????一定得是 出库"
End If End Sub
做VBA首先得会录制宏,不会就F1,会大大提高学习效果。
Application.ScreenUpdating 这个是代表是否使用屏幕刷新,处理大数据的时候最好将其关闭,否则你会卡死的。
其他的自己摸索摸索就会了
VBA学习之关于数据透视表的应用的更多相关文章
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- EXCEL 2010学习笔记 —— 数据透视表
今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...
- AutoHotkey调用VBA实现批量精确筛选数据透视表某字段内容。
如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐. 实现思路: 先复制红色的内容. 鼠标停留在数据透视表[型号]列的任意数据上(通过该单元格可以获取数据透视表和字段) 由于数据透视表的 ...
- Excel学习 -- 数据透视表功能
Excel -- 数据透视表基础 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关. 之所以称为数据透视表,是因 ...
- Excel宏录制、数据透视表、合并多个页签
前段时间做数据分析的时候,遇到很多报表文件需要处理,在此期间学习了很多Excel操作,特此做笔记回顾. Excel宏录制 打开开发者工具 打开Excel文件,选择”文件”-->“选项”--> ...
- Excel 批量快速合并相同的单元格:数据透视表、宏代码、分类汇总
Excel 批量快速合并相同的单元格 在制作Excel表格的时候,为了使得自己制作的报表更加简洁明了,方便查阅,经常需要合并很多相同的单元格,如果有几千几万条记录需要合并的话,真的会让人发疯.怎样 ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
- 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错
假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...
- 【转】关于C#使用Excel的数据透视表的例子
收到消息,下星期又有导出 Excel 报表的代码要写.心想,不就是 OleDb 先 CREATE 表, 然后 INSERT 么?都是体力活啊...... 结果拿到纸张的报表,我就悲剧了.报表的结构,像 ...
随机推荐
- Windows程序设再读笔记01-起步
1.从程序员角度看,统一的界面意味着编程人员可以使用windows自带的例程来构建许多的功能,例如菜单,对话框等.只用几行代码就可以实现很多复杂的功能.但是这同时也增加了一些限制,使得做出一个个性化的 ...
- CentOS7中升级Docker版本
参考:http://blog.csdn.net/liumiaocn/article/details/52130852
- 计算机缺失缺少mfc110.dll等相关文件的解决办法
去https://www.microsoft.com/zh-CN/download/details.aspx?id=30679下载 VSU4\vcredist_x64.exe 和VSU4\vcredi ...
- 高可用Hadoop平台-Flume NG实战图解篇
1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...
- mobx源码解读2
我们将上节用到的几个类的构造器列举一下吧: function Reaction(name, onInvalidate) { if (name === void 0) { name = "Re ...
- python Tornado(招聘的一个比较经常问到的知识)
Tornado既是一个webserver也是一个web框架 这是一个总结的比较详细的内容 http://www.nowamagic.net/academy/detail/1332612 开源中国中的关 ...
- RabbitMQ消息队列1: Detailed Introduction 详细介绍
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
- js 和 jq 控制 checkbox
判断checkbox是否选中 1. $("#id").attr("checked") 在jquery 1.6前(含1.6),返回值是boolean类型的tru ...
- 笔记26-徐 SQLSERVER内存分配和常见内存问题
1 --64位SQLSERVER 应用在IA64操作系统 7TB 2TB ...
- String 与 StringBuffer的区别
String="a" 的方式每相加一次就创建一个新的常量,原常量不消失,比较占内存:StringBuffer是放在堆里面,append直接在原地址相加,不占内存