EXCEL VBA(EXCEL透视表的制作)

更新时间:2023-07-27 03:36:25 阅读: 评论:0

嗯,昨天家里来客人了,十来个人在围着吃火锅,好不热闹,所以把课程耽误了,不过不要紧,下面就让我来和大家一起讨论一下如何用VBA创建,操作EXCEL的数据透视表-------半年前我求人家帮我也求不来,NND,以下的教程是我一手一脚试出来的,耗时两天,当你回复这个帖子的同时,你也会觉得回复得很值,如果你有更好的想法,一起说出来研究一下~~~哈哈。
在做这些之前,我得告诉你们,数据透视表的体积可是相当的大,可能超过你的文件本身的10倍以上,所以啊,要小心喽~~~
录制一个数据透视表宏
在讲这一切之前,我们再回到以前的习惯,看一下这个透视表都有些啥对像。然后呢,我们来录制一个宏,来一起研究一下如何去用VBA来写。
为我们得到的代码都是一样的,所以请用以下的数据进行录制。谢谢。
我们来录制这样一个宏――――我们把所有的数量(Order Quantity)按Inventory Code 分组求和
这是生成的数据透视表:
录制的宏很简单,如下面的代码。
thermosSub Macro1()
'' Macro1 Macro
' 宏由 XueweiL 录制,时间: 11/28/2008
'    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDataba, SourceData:= _
        "tc521!R1C1:R575C12").CreatePivotTable TableDestination:="", TableName:= _
        "数据透视表1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.PivotTables("数据透视表1").AddFields RowFields:="Inventory_Code"
    ActiveSheet.PivotTables("数据透视表1").PivotFields("Order Quantity").Orientation = _
        xlDataField
End Sub
好了,在这里我们可以看到几个对象。我们一一来了解一下。
PivotCache
透视表缓存,如果改变数据源,可以修改这个属性。下面这个代码可以马上刷新当前的数据透视表
葫芦丝学习班
ActiveSheet.PivotTables(1).PivotCache.Refresh
PivotCell
透视表的一个单元格
PivotField
表示数据透视表中的一个字段PivotField 对象是 PivotFields 集合的成员。PivotFields 集合包含数据透视表中所有的字段,也包括隐藏字段。
PivotFormula
代表在数据透视表中用于计算的公式。
PivotItem
代表数据透视表字段中的一个项。该项是字段类别中的一个独立的数据条目。PivotItem 对象是 PivotItems 集合的成员。PivotItems 集合包含 PivotField 对象中的所有项。
PivotItemList
指定的数据透视表中所有 PivotItem 对象的集合。每个 PivotItem 代表数据透视表字段中的一个项。
PivotLayout
代表数据透视图报表中字段的位置。
PivotTable
代表工作表上的一张数据透视表。PivotTable 对象是 PivotTables 集合的成员。PivotTables 集合包含单张工作表中的所有 PivotTable 对象。
有人说,TNND这样我怎么看得懂啊没关系,只是先让你知道有那么个东东先,后面你就会明白了。
用VBA创建一个透视表
由刚刚录制的宏和我们平时用数据透视表的习惯可以知道,建立数据透视表的步骤是:确定数据源-- 确定行与例- 确定数据项及运算公式
先来看看这个代码,这个代码与刚刚我 们录制的代码的功能是一样的,都是把所有的数量(Order Quantity)按Inventory Code 分组求和:
[把代码COPY到VBE里面去~~~~]
Sub CreatePivotTable()
Dim ptcache As PivotCache
Dim pt As PivotTable
'设置区域
Set ptcache = ActiveWorkbook.PivotCaches.Add(xlDataba, Sheet1.Range("A1").CurrentRegion.Address)
upan
'增加透视表到新的工作表
glasgow如果你不想加到新的工作表去,比如你想加到另一个工作表的C1单元格去,那么你可以这样写:
‘Set pt = ptcache.CreatePivotTable(Sheet2.Range("c1"), "PT1")
Set pt = ptcache.CreatePivotTable("", "PT1")
With pt
'设定行字段
.PivotFields("Inventory_Code").Orientation = xlRowField
'设定数据字段
'设定数据字段的公式默认为求和
mode.PivotFields("Order Quantity").Orientation = xlDataField
End With
'应用于 CubeField 和 PivotField 对象的 Orientation 属性。'
'在指定数据透视表中的字段位置。XlPivotFieldOrientation 可为以下 XlPivotFieldOrientation 常量之一。
木醋酸
'xlColumnField  例字段
女人怎样保养皮肤'xlDataField    值字段故事mp3
'xlHidden      隐藏字段
'xlPageField    页字段
'xlRowField    行字段
End Sub
看了这段代码,是否觉得很简单呢??做一个透视表也只不过是 设定PivotCache,再用Pi
votCache添加透视表,再用透视表的PivotFields的字段去构造这个透视表的结构,就是那么简单。
修改数据项的公式
kayak
当然了,接下来可没有那么简单了。。。。假如我要把所有的数量(Order Quantity)按Inventory Code 分组计数,就要用到修改计算公式的方法。上面介绍了,在EXCEL透视表中,数值字段默认是求和的,那我们要怎么样去修改呢
我们注意到PivotField的有一个Function 属性,在录制宏的时候,也可以看到是用FUNCTION去修改的。我试着去修改,得到下面这些代码:
ActiveSheet.PivotTables("PT1").PivotFields("求和项:Order Quantity").Function =xlCount
这个"求和项:Order Quantity"可不怎么好得到,但是他是在数据区的字段,我们可以用pt.DataFields(1).Caption 或是pt.DataFields(1).Name 去得到。
建立多字段的复杂报表
我们已经知道了如何建立一个透视表了,现在就来做一个复杂一点的报表. 我们来建立像下面这样的一个报表
我们的步骤和以前一样~~~代码如下:
Sub CreatePivotTable()
Dim ptcache As PivotCache
Dim pt As PivotTable
'设置区域
Set ptcache = ActiveWorkbook.PivotCaches.Add(xlDataba, Sheet1.Range("A1").CurrentRegion.Address)
英语在线翻译'增加透视表到新的工作表
'如果你不想加到新的工作表去,比如你想加到另一个工作表的C1单元格去,那么你可以这样写:
'Set pt = ptcache.CreatePivotTable(Sheet2.Range("c1"), "PT1")
Set pt = ptcache.CreatePivotTable("", "PT1")
With pt
'设定页字段
.
PivotFields("Account_Number").Orientation = xlPageField
.PivotFields("Order_Status_Code").Orientation = xlPageField
'设定行字段
.PivotFields("Inventory_Code").Orientation = xlRowField
'设定例字段
.PivotFields("Shipment Due Date").Orientation = xlColumnField
'设定数据字段
'设定数据字段的公式默认为求和
.PivotFields("Order Quantity").Orientation = xlDataField

本文发布于:2023-07-27 03:36:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1119293.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:透视   数据   表中   代码   工作   公式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图