工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法。

学习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学习之关于数据透视表的应用的更多相关文章

  1. VSTO学习笔记(十四)Excel数据透视表与PowerPivot

    原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...

  2. EXCEL 2010学习笔记 —— 数据透视表

    今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...

  3. AutoHotkey调用VBA实现批量精确筛选数据透视表某字段内容。

    如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐. 实现思路: 先复制红色的内容. 鼠标停留在数据透视表[型号]列的任意数据上(通过该单元格可以获取数据透视表和字段) 由于数据透视表的 ...

  4. Excel学习 -- 数据透视表功能

    Excel -- 数据透视表基础 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关.    之所以称为数据透视表,是因 ...

  5. Excel宏录制、数据透视表、合并多个页签

    前段时间做数据分析的时候,遇到很多报表文件需要处理,在此期间学习了很多Excel操作,特此做笔记回顾. Excel宏录制 打开开发者工具 打开Excel文件,选择”文件”-->“选项”--> ...

  6. Excel 批量快速合并相同的单元格:数据透视表、宏代码、分类汇总

    Excel 批量快速合并相同的单元格   在制作Excel表格的时候,为了使得自己制作的报表更加简洁明了,方便查阅,经常需要合并很多相同的单元格,如果有几千几万条记录需要合并的话,真的会让人发疯.怎样 ...

  7. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  8. 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错

    假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...

  9. 【转】关于C#使用Excel的数据透视表的例子

    收到消息,下星期又有导出 Excel 报表的代码要写.心想,不就是 OleDb 先 CREATE 表, 然后 INSERT 么?都是体力活啊...... 结果拿到纸张的报表,我就悲剧了.报表的结构,像 ...

随机推荐

  1. SSDP

    SSDP:Simple Service Discover Protocol,简单服务发现协议,PC机只要网口UP,就会通过该协议寻找可用的网络服务.PC机发出的报文基于UDP协议的1900端口发送组播 ...

  2. SQL Server 2012 AlwaysOn 亲身实历记

    亲身经历的一个项目,老板忽然提出,对数据库的负债要实施分流,来个数据库一个负责读,而另一个负责写,后台是需要同步两个数据库的状态.找了很多的资料,发现新版的alwayson可以实现这个功能. 研读了a ...

  3. maven构建过程

    [转载]原地址:http://www.cnblogs.com/xdp-gacl/p/4051690.html 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自 ...

  4. js面向对象笔记

    JavaScript 私有成员实现 到此为止,如果您任然对 JavaScript 面向对象持怀疑态度,那么这个怀疑一定是,JavaScript 没有实现面向对象中的信息隐藏,即私有和公有.与其他类式面 ...

  5. 8.15 CSS知识点6

    自定义动画 1.animation-name(动画名称) 元素所应用的动画名称,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义. 语法: animation-name ...

  6. ndoutils2.2.0(ndo2db)中文乱码问题解决

    ndoutils插入中文时,产生数据库乱码请用下面两个文件: 适用版本:ndoutils-2.0.0 数据库初始化mysql.sql: 修改ndoutils-2.0.0/src目录中的db.c ndo ...

  7. Canvas画图在360浏览器中跑偏的问题

    问题描述,canvas画图的js代码中编写的是画正方形的代码,结果在360浏览器上变成了长方形,不知道怎么回事,请问各位大神是否遇到过此类问题? <!DOCTYPE html> <h ...

  8. poj1985 Cow Marathon (求树的直径)

    Cow Marathon Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 3195   Accepted: 1596 Case ...

  9. Linux驱动学习之驱动开发准备工作

    一.开启驱动开发之路 1.驱动开发的准备工作 (1)正常运行linux系统的开发板.要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的.原因在于在安装模块的时候会进行安全性校验 ...

  10. 循序渐进Python3(十一) --2-- web之javascript

      JavaScrip                JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之后 ...