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

学习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. Java web--Filter过滤器分IP统计访问次数

    分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...

  2. iOS 获取应用版本信息

    现在许多接口都需要上传应用版本信息,所以呢,这个是必不可少的,可以在进入应用的时候先获取到,然后存在单例中,用的时候直接调用单例就好了,记住这些字符串 NSString *executableFile ...

  3. ssh访问控制,多次失败登录即封掉IP,防止暴力破解

    ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...

  4. Ubuntu 查看和杀死进程

    1.ps -e 2.netstat -antup 3.kill pid 4.pgrep 进程名 5.killall  进程名 6.kill -9 pid

  5. .NET Framework 框架的一些简单介绍

    20世纪90年代以来出现的3种典型的组件技术: 1)OMC(对象组件模型)的CORBA2)Microsoft的COM/DCOM3)Sun公司的JavaBeans 在2002年,微软发布了.NET框架的 ...

  6. Xamarin Android自学和实践步骤

    一.入门(已完成) 1.学习Xamarin Android项目的基本结构 2.学习界面布局的基本方式 3.学习基本编码规则 4.学习页面跳转和传值 5.学习对话框和提示信息显示方法 6.学习使用系统剪 ...

  7. Redis从基础命令到实战之字符串类型

    字符串类型是Redis中最基本的数据类型,能存储任何形式的字符串和和二进制数据.本文以代码形式列举常用的操作命令,并在实践部分演示一个简单的商品管理功能,实现了通常使用关系型数据库开发的增改查功能,注 ...

  8. 第8章 BOM

    8.1 window对象 window有双重的角色,既可以通过JavaScript访问浏览器窗口的接口,又是ECMAScript规定的Global对象. 全局作用域中声明的变量.函数都会变成windo ...

  9. new和alloc的区别

    简单来说,new和alloc在功能上基本没有什么区别,都是分配内存,初始化对象. 但是,调用new的话,只能通过默认的init方法来初始化对象,而alloc可以通过其他的初始化方法如:-(instan ...

  10. 401 Not Authorized For MSDEPLOY‏ (msdeployAgentService)

    When you get this error from msdeploy:“Error: The remote server returned an error: (401) Unauthorize ...