Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 13499|回复: 11

[分享] VBA 中数据透视表应用案例

[复制链接]
发表于 2011-2-15 09:16 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2013-4-19 11:32 编辑

QQ截图未命名.jpg

  1. Sub Top5Customers()
  2.     Dim WSD As Worksheet
  3.     Dim WSR As Worksheet
  4.     Dim WBN As Workbook
  5.     Dim PTCache As PivotCache
  6.     Dim PT As PivotTable
  7.     Dim PRange As Range
  8.     Dim FinalRow As Long
  9.     Set WSD = Worksheets("PivotTable")
  10.         
  11.     '删除其他透视表
  12.     For Each PT In WSD.PivotTables
  13.         PT.TableRange2.Clear
  14.     Next PT
  15.     WSD.Range("J1:Z1").EntireColumn.Clear
  16.         
  17.     ' 定义输入数据以及数据源
  18.     FinalRow = WSD.Cells(Application.Rows.Count, 1).End(xlUp).Row
  19.     FinalCol = WSD.Cells(1, Application.Columns.Count). _
  20.         End(xlToLeft).Column
  21.     Set PRange = WSD.Cells(1, 1).Resize(FinalRow, FinalCol)
  22.     Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:= _
  23.         xlDatabase, SourceData:=PRange.Address)
  24.    
  25.     ' 创建数据透视表
  26.     Set PT = PTCache.CreatePivotTable(TableDestination:=WSD. _
  27.         Cells(2, FinalCol + 2), TableName:="PivotTable1")
  28.    
  29.     '关闭更新
  30.     PT.ManualUpdate = True
  31.    
  32.     ' 设置行列字段
  33.     PT.AddFields RowFields:="Customer", ColumnFields:="Product"
  34.    
  35.     ' 设置数据字段
  36.     With PT.PivotFields("Revenue")
  37.         .Orientation = xlDataField
  38.         .Function = xlSum
  39.         .Position = 1
  40.         .NumberFormat = "#,##0"
  41.         .Name = "Total Revenue"
  42.     End With
  43.         
  44.     ' 如果数据为空以0表示
  45.     PT.NullString = "0"
  46.    
  47.     ' 根据数据排序
  48.     PT.PivotFields("Customer").AutoSort Order:=xlDescending, _
  49.         Field:="Total Revenue"
  50.    
  51.     ' 显示排名前5
  52.     PT.PivotFields("Customer").AutoShow Type:=xlAutomatic, Range:=xlTop, _
  53.         Count:=5, Field:="Total Revenue"
  54.    
  55.     PT.ManualUpdate = False
  56.     PT.ManualUpdate = True
  57.    
  58.     ' 创建新的工作报表
  59.     Set WBN = Workbooks.Add(xlWBATWorksheet)
  60.     Set WSR = WBN.Worksheets(1)
  61.     WSR.Name = "Report"
  62.     ' 设置标题
  63.     With WSR.[A1]
  64.         .Value = "Top 5 Customers"
  65.         .Font.Size = 14
  66.     End With
  67.         
  68.     ' 复制数据
  69.     PT.TableRange2.Offset(1, 0).Copy
  70.     WSR.[A3].PasteSpecial Paste:=xlPasteValuesAndNumberFormats
  71.     LastRow = WSR.Cells(Rows.Count, 1).End(xlUp).Row
  72.     WSR.Cells(LastRow, 1).Value = "Top 5 Total"
  73.    
  74.     ' 返回透视表获取数据
  75.     PT.PivotFields("Customer").Orientation = xlHidden
  76.     PT.ManualUpdate = False
  77.     PT.ManualUpdate = True
  78.     PT.TableRange2.Offset(2, 0).Copy
  79.     WSR.Cells(LastRow + 2, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
  80.     WSR.Cells(LastRow + 2, 1).Value = "Total Company"
  81.    
  82.     ' 清除透视表
  83.     PT.TableRange2.Clear
  84.     Set PTCache = Nothing
  85.    
  86.     ' 设置一下新表的格式
  87.     WSR.Range(WSR.Range("A3"), WSR.Cells(LastRow + 2, 6)).Columns.AutoFit
  88.     Range("A3").EntireRow.Font.Bold = True
  89.     Range("A3").EntireRow.HorizontalAlignment = xlRight
  90.     Range("A3").HorizontalAlignment = xlLeft
  91.     ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$3:$G$11"), , xlYes).Name = _
  92.         "Table1"
  93.     ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleDark5"
  94.     Range("A2").Select
  95.     MsgBox "CEO Report has been Created"
  96. End Sub
复制代码

数据透视表应用案例 2003版.rar

123.76 KB, 下载次数: 124

数据透视表应用案例 2010版.rar

266.57 KB, 下载次数: 187

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-2-15 10:06 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-7 13:26 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-8 01:55 | 显示全部楼层
学习一下!
回复

使用道具 举报

发表于 2012-12-21 10:44 | 显示全部楼层
先研究一下
回复

使用道具 举报

发表于 2012-12-22 11:25 | 显示全部楼层
好好学习,天天向上!
回复

使用道具 举报

发表于 2012-12-22 16:00 | 显示全部楼层
学习一下 ,楼主威武

回复

使用道具 举报

发表于 2013-1-8 01:15 | 显示全部楼层
收了啊,谢谢!
回复

使用道具 举报

发表于 2013-1-13 19:32 | 显示全部楼层
学习了,哈哈!
回复

使用道具 举报

发表于 2013-2-28 15:28 | 显示全部楼层
学习               谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 07:00 , Processed in 0.413678 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表