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 = 1
                End With
                With ActiveSheet.PivotTables("name").PivotFields("业务员")
                    .Orientation = xlRowField
                    .Position = 1
                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 = 1
             ElseIf pvtitem.name = "XXB" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXB").Position = 2
             ElseIf pvtitem.name = "XXC" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXC").Position = 3
             ElseIf pvtitem.name = "XXD" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXD").Position = 4
             ElseIf pvtitem.name = "XXE" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXE").Position = 5
             ElseIf pvtitem.name = "XXE" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXF").Position = 6
             ElseIf pvtitem.name = "XXF" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXG").Position = 7
             ElseIf pvtitem.name = "XXG" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXH").Position = 8
             ElseIf pvtitem.name = "XXH" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXJ").Position = 9
             ElseIf pvtitem.name = "XXJ" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXK").Position = 10
             ElseIf pvtitem.name = "XXK" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXL").Position = 11
             ElseIf pvtitem.name = "XXE" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXE").Position = 12
             ElseIf pvtitem.name = "XXL" Then
             pvtitem.Visible = True
                ActiveSheet.PivotTables("name").PivotFields("产品名称").PivotItems("XXL).Position = 13
          Else
             pvtitem.Visible = False
          End If
        Next

Application.ScreenUpdating = True

 Else
 MsgBox "sheet表名称不对吧????一定得是 出库"
 End If

End Sub

做VBA首先得会录制宏,不会就F1,会大大提高学习效果。

Application.ScreenUpdating  这个是代表是否使用屏幕刷新,处理大数据的时候最好将其关闭,否则你会卡死的。其他的自己摸索摸索就会了
时间: 2024-10-24 20:16:48

VBA学习之关于数据透视表的应用的相关文章

用VBA创建数据透视表

作者:iamlaosong 有个拣货报表,想先从货品信息中分离出颜色信息,再根据储位.名称和颜色创建一个数据透视表,由于数据是变化的(结构不变,记录数会变),每次重新创建很麻烦,因此想做个工具,用VBA分离颜色并创建数据透视表,供其他人使用.分离颜色的代码很好写,创建数据透视表的代码自然采用录制宏的方法最简单,代码出来后修改一下就行了.工具界面如下: 拣货单的内容如下,需要分离SKU信息中的颜色: 工具的代码如下: '分离信息 Sub separate_information() On Erro

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

今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3.更改数据透视表的组合 4.汇总多列数据,进行数据的分别统计 5.在透视表中利用公式进行计算 6.利用筛选字段创建多个工作表 1.创建数据透视表 从基本的操作层面来说:在获得了数据源之后,可以通过简单的插入功能和拖动命令生成一份数据透视表.创建一个新表格的时候,首先要确定最后的表格的行,列分别记录什么

【Excel 2013 数据透视表 学习】一、创建数据透视表

1 数据透视表 是Excel中数据处理分析工具. 用途: 1. 快速分类汇总.比较大量数据. 2. 快速变化统计分析维度查看统计结果. 数据透视表不仅综合了数据排序.筛选.组合及分类汇总等数据分析方法的优点,而且汇总的方式更灵活多变,并以不同方式显示数据.移动字段所处位置即可变换出各种报表. 2 数据透视表的数据源 4种类型的数据源创建数据透视表: 1. Excel数据列表清单(sheet工作表) 2. 外部数据源 (1) 文本 (2) SQL Server (3) Microsoft Acce

动态图表制作——数据透视表+函数

大家都知道Excel的图表功能是简单而又强大的,使用Excel能做出很漂亮的商业图表,但是通常我们只做的图表都是静态的--一个图表只能显示一到二个数据维度的情况. 在Ecxel使用过程中,难免需要根据现有数据,制作可视化更高的更能说明问题的图表,在图表制作时,常规的往往只是利用已有的数据进行,如果一张工作表中,数据繁多,并希望每个数据(字段)都有图表出现,我们遵循常规方法制作n多个图表? 如果需要演示的数据有多组维度,比如不同年份不同部门的费用--,或者纵轴系列过多会导致在图形上观察数据的不便,

excel2013做数据透视表

excel2013做数据透视表 Excel最新版更新到2013,相比2003.2007和2010,2013的excel界面方面有一定变化,在操作方面也有一定的便捷性.那么如何使用excel2013做一些简单的数据汇总.透视,以及在数据透视表中进行计算.展现等呢,请大家跟着我一起来一起操作吧. 1 首先打开你要用来做数据透视表的excel文件,如图我自己弄了一个样本示例文件,预先选择好你要做数据透视的区域,如我的示例文件我选择A1:F24区域,记得要连带表头一起选择. 2 然后点击最顶端的菜单"插

ASP.NET实现类似Excel的数据透视表

代码: /Files/zhuqil/Pivot.zip 数据透视表提供的数据三维视图效果,在Microsoft Excel能创建数据透视表,但是,它并不会总是很方便使用Excel.您可能希望在Web应用程序中创建一个数据透视报表.创建一个简单的数据透视表可能是一件非常复杂的任务.所以,我打算不但为你提供一个非常有用的工具创建简单和高级的数据透视表,而且为你移除一些笼罩他们的神秘面纱. 目标是:我们想要有能力将datatable中的二维的数据转换成三维视图. 在大多数情况下,你会从数据库的查询数据

excel 数据透视表 " 启用选定内容" 的用途

excel2007  数据透视表 选定数据透视表---选项---选择 ----启用选定内容(这是一个开关项,按一次有效,再按一次失效) 启用选定内容后,当鼠标在数据透视表上变成黑色小箭头时可以快速选取具有相同属性的标签.值行.字段列.用于批量修改所选区域的属性

【峰回路转】Excel技巧百例 10.数据透视表的简单使用-分类汇总

在excel如何实现类似SQL SERVER中的group by的功能呢?在excel中可以使用透视表来完成这个工作. 原始数据: 假设这是某学校的学生成绩表(当然数据为很多,我们用少量数据演示这个功能) 如何快速得到每个学生的总分呢? 1.选中数据区域 2.点击上面的插入tab中的"数据透视表" 3.在弹出的窗口,点击确定 4.在新出现的窗口右侧将姓名放到行中,将分数拖拽到列中 5. 我们可以快速得到我们想要的结果,我们也可以把结果复制,然后选择性粘贴为数值,便于自己进行其他调整.

【峰回路转】Excel技巧百例 11.数据透视表的简单使用-行列转换

Excel的数据透视表不仅可以进行分类汇总,而且可以轻松快捷的进行行列转换 例如: 按照上篇文章中的方法我们可以插入数据透视表,将姓名放到行中,将课程放到列中,将分数放到值中: 从上面的结果中,我们可以清晰的看到有人缺考了英语 如果只显示姓名有重名的怎么办?是否可以把学号也显示出来呢?我们下一篇将介绍如何既显示学号,又显示姓名. 版权声明:本文为博主原创文章,未经博主允许不得转载.