代码正在运作!感谢帮助!
我正在尝试创建一个动态数据透视表,该表将处理行数不同的数据。目前,我有28,300行,但这可能每天都有变化。
数据格式示例如下:
Case Number Branch Driver
1342 NYC Bob
4532 PHL Jim
7391 CIN John
8251 SAN John
7211 SAN Mary
9121 CLE John
7424 CIN John
已完成的表格示例:
Driver NYC PHL CIN SAN CLE
Bob 1 0 0 0 0
Jim 0 1 0 0 0
John 0 0 2 1 1
Mary 0 0 0 1 0
代码如下:
Sub CreateSummaryReportUsingPivot()
' Use a Pivot Table to create a static summary report
' with model going down the rows and regions across
Dim WSD As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long
Dim FinalCol As Long
Set WSD = Worksheets("PivotTable")
'Name active worksheet as "PivotTable"
ActiveSheet.Name = "PivotTable"
' Delete any prior pivot tables
For Each PT In WSD.PivotTables
PT.TableRange2.Clear
Next PT
' Define input area and set up a Pivot Cache
FinalRow = WSD.Cells(Application.Rows.Count, 1).End(xlUp).Row
FinalCol = WSD.Cells(1, Application.Columns.Count). _
End(xlToLeft).Column
Set PRange = WSD.Cells(1, 1).Resize(FinalRow, FinalCol)
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:= _
xlDatabase, SourceData:=PRange)
' Create the Pivot Table from the Pivot Cache
Set PT = PTCache.CreatePivotTable(TableDestination:=WSD. _
Cells(2, FinalCol + 2), TableName:="PivotTable1")
' Turn off updating while building the table
PT.ManualUpdate = True
' Set up the row fields
PT.AddFields RowFields:="Driver", ColumnFields:="Branch"
' Set up the data fields
With PT.PivotFields("Case Number")
.Orientation = xlDataField
.Function = xlCount
.Position = 1
End With
With PT
.ColumnGrand = False
.RowGrand = False
.NullString = "0"
End With
' Calc the pivot table
PT.ManualUpdate = False
PT.ManualUpdate = True
End Sub
答案 0 :(得分:2)
他们更改了PivotCaches的对象模型。您需要在2007-2010中使用的方法(使用VBA版本7而不是版本6)
PivotCaches.Create
答案 1 :(得分:1)
除了更改行数之外,您使用VBA的原因是什么?
如果您使用的是Excel 2007/2010,请从原始数据创建常规表/列表(Ctrl-L)。你也可以给它一个名字。然后创建一个数据透视表并使用表名作为数据源。当您添加行时,您的表将展开,然后您可以只刷新数据透视表(F5,或使用VBA)。
如果您使用的是Excel 2003,则还可以创建动态命名范围。它稍微复杂一点(而且更难看)但是如果你被困在旧版本上,我可以引导你完成它。