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

学习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. HTTP服务&Ajax编程知识点导图

  2. 以练代学之shell入门(一)

    5年前的时候,开始接触linux操作系统,接触的第一步就是学习shell脚本.用小脚本以连代学入了门. 1) 9*9乘法输出 2) 检验主机的服务是否启动 3) 冒泡排序 4) 备份当时team服务器 ...

  3. eclipse重定向输入输出到文件

    最近在学习算法第四版,为了要用作者给的测试数据alg4-data,需要将数据直接导入到程序中.在作者的示例代码里用了重定向来做这个事情,但是在eclipse里使用重定向很不方便,查了很多资料,都说是在 ...

  4. completed solution matches microsoft sequential workflow tutorial

    microsoft sequential workflow tutorial website:http://msdn.microsoft.com/en-us/library/ms734794(v=vs ...

  5. datetimepicker一个不错的日历android特效

    datetimepicker一个不错的日历效,选中和选择日历效果都很不错, 实用的时候直接可以把datetimepicker-library这个引入到项目,调用的地方在实现 TimePickerDia ...

  6. 改变Eclipse 中代码字体大小

    1.改变eclipse 中代码字体大小,就是我打进去的java文件的字体大小 wiondow--preferences--general--appearance--colors and fonts-- ...

  7. APP测试之登录

    我们公司产品登录很简单 手机号为账号,每次登录输入短信验证码.验证码为6位数字.登陆后可以记录登录状态.未登录时可以微信登录然后验证或者APP登录后可以在个人中心绑定微信. 一APP内部登录 1.手机 ...

  8. Java 名词

    Plain Ordinary Java Object    pojo  简单java对象 Constant   常量 Business Object   BO  业务对象 Framework  框架

  9. RegExp对象

    RegExp()构造函数带有两个字符串参数,其中第二个是可选的,如果提供第二个参数,它就指定正则表达式的修饰符.第一个函数包含正则表达式的主题部分,也就是正则表达式直接量中两条斜线之间的文本.无论是字 ...

  10. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE