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

学习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. 云时代的分布式数据库:阿里分布式数据库服务DRDS

    发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...

  2. gtktree和gtktext使用时要在文件中定义GTK_ENABLE_BROKEN

    linux下调试程序,出现如下错误: /tmp/ccG8fpwg.o: In function `apache_viewlog_form':apache.c:(.text+0x776): undefi ...

  3. Spring AOP /代理模式/事务管理/读写分离/多数据源管理

    参考文章: http://www.cnblogs.com/MOBIN/p/5597215.html http://www.cnblogs.com/fenglie/articles/4097759.ht ...

  4. linux c学习笔记08--文件操作

    1 . 创建int creat(const char *filename, mode_t mode);参数 mode 指定新建文件的存取权限,它同 umask 一起决定文件的最终权限( mode&am ...

  5. linux+php+apache web调用python脚本权限问题解决方案

    lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...

  6. const 限定符

    1.定义const对象 const限定符把一个对象转换成一个常量 const int Bufsize = 512; 定义Bufsize 为常量并初始化为512.变量Bufsize仍然是一个左值,但是不 ...

  7. AJAX避免服务器调用上个页面缓存的办法

    GET 请求 一个简单的 GET 请求: xmlhttp.open("GET","demo_get.asp",true); xmlhttp.send(); 亲自 ...

  8. m.jd.com首页中的js效果

    m.jd.com中的部分js效果 昨天把m.jd.com的首页布局写好了,今天写一下首页中部分js效果.头部背景色透明度的改变,焦点图轮播,京东快报的小轮播,以及秒杀倒计时.这里html,css样式就 ...

  9. js类型转化

    1. == 是会进行类型转换再进行判断的. true是转换成1,false是转换成0 然后再进行判断 == true false == true true === false false == fal ...

  10. c++总结01

    今天编写了四个小程序分别是“石头剪刀布游戏”“数字之间加空格输出”“蛇形矩阵”“螺旋矩阵”. 通过编写石头剪刀布代码 熟悉了switch语句和if语句的使用,同时也运用了do..while语句,其中 ...