2015-08-21 120 views
0

我搜索瞭解決方案的董事會,但我無法找到任何類似的東西。VBA數據透視表彼此之間

我試圖放置大約5個數據透視表,其中數據的行數不同。我能夠在前兩種情況下完成它,但代碼在第三種情況下無法使用。

不幸的是,我被要求將它們垂直放置在表單上。以下是我的一段代碼。對不起,我對VBA很陌生。我正在使用Excel 2007.

Sheets.ADD.Name = "Pivot" 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "CTB!" & Sheets("CTB").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ 
    TableDestination:="Pivot!R1C1", TableName:="PivotTable1", DefaultVersion _ 
    :=xlPivotTableVersion14 

Cells(1, 1).Select 
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Collector") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable1").PivotFields("Transaction #"), "Count of Transaction #", xlCount 
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable1").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum 
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable1").PivotFields("Total Balance"), "Sum of Total Balance", xlSum 
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable1").PivotFields("Days Late"), "Sum of Days Late", xlSum 
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Days Late") 
    .Caption = "Average of Days Late" 
    .Function = xlAverage 
End With 

Dim pt As PivotTable 
Set pt = Sheets("Pivot").PivotTables("PivotTable1") 

Application.PivotTableSelection = True 
pt.PivotSelect ("Sum of Total Balance"), xlDataOnly 
Selection.Style = "Currency" 
pt.PivotSelect ("Sum of Invoice Amount"), xlDataOnly 
Selection.Style = "Currency" 
pt.PivotSelect ("Average of Days Late"), xlDataOnly 
Selection.NumberFormat = "0" 

Dim LastRow As Long 
LastRow = Sheets("Pivot").Cells(Sheets("Pivot").Rows.Count, "A").End(xlUp).Row 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "C121+!" & Sheets("C121+").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ 
    TableDestination:=Range("A" & LastRow + 2), TableName:="PivotTable2", DefaultVersion _ 
    :=xlPivotTableVersion14 

Dim pt2 As PivotTable 
Set pt2 = Sheets("Pivot").PivotTables("PivotTable2") 

pt2.TableRange1.Select 
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Collector") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable2").PivotFields("Transaction #"), "Count of Transaction #", xlCount 
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable2").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum 
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable2").PivotFields("Total Balance"), "Sum of Total Balance", xlSum 
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable2").PivotFields("Days Late"), "Sum of Days Late", xlSum 
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Sum of Days Late") 
    .Caption = "Average of Days Late" 
    .Function = xlAverage 
End With 

Application.PivotTableSelection = True 
pt2.PivotSelect ("Sum of Total Balance"), xlDataOnly 
Selection.Style = "Currency" 
pt2.PivotSelect ("Sum of Invoice Amount"), xlDataOnly 
Selection.Style = "Currency" 
pt2.PivotSelect ("Average of Days Late"), xlDataOnly 
Selection.NumberFormat = "0" 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "11+!" & Sheets("11+").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ 
    TableDestination:=Range("A" & LastRow + 2), TableName:="PivotTable3", DefaultVersion _ 
    :=xlPivotTableVersion14 

Dim pt3 As PivotTable 
Set pt3 = Sheets("Pivot").PivotTables("PivotTable3") 

pt3.TableRange1.Select 
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Collector") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable3").PivotFields("Transaction #"), "Count of Transaction #", xlCount 
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable3").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum 
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable3").PivotFields("Total Balance"), "Sum of Total Balance", xlSum 
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable3").PivotFields("Days Late"), "Sum of Days Late", xlSum 
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Sum of Days Late") 
    .Caption = "Average of Days Late" 
    .Function = xlAverage 
End With 

Application.PivotTableSelection = True 
pt3.PivotSelect ("Sum of Total Balance"), xlDataOnly 
Selection.Style = "Currency" 
pt3.PivotSelect ("Sum of Invoice Amount"), xlDataOnly 
Selection.Style = "Currency" 
pt3.PivotSelect ("Average of Days Late"), xlDataOnly 
Selection.NumberFormat = "0" 

任何意見將不勝感激!

+0

「代碼是不是從第三工作」你得到一個錯誤?意想不到的結果?你期望什麼?你有問題,或者只是在你的下午填寫我們的信息? – Greg

+0

如果不清楚,我很抱歉。我得到「數據透視表報告不能重疊另一個數據透視表報告」。我希望它只是在第二個數據透視表下插入第三個數據透視表。 –

回答

1

它看起來像你必須更新你的LastRow變量每次你想插入一個新的pivotTable。然後將下一個pivotTable插入到最後一行下面的兩行內的範圍內...

在插入第二個pivotTable之前設置LastRow變量一次,但必須重置它才能讀取當前的最後一行插入pivotTable3等,等等

+0

沒想過,但也不管用。代碼保持運行,應該將PivotTable3放置在某處,但我無法看到它,然後在嘗試創建PivotTable4時代碼失敗。有任何想法嗎? –

+0

只是想通了。我把它粘在了錯誤的地方。非常感謝! –