枢轴在小范围内工作但不大

时间:2017-07-11 13:22:45

标签: vba excel-vba excel

我已经编写了下面的代码,用于从名为Data的工作表生成一个数据透镜,如果数据超出了Z,则数据直到Z列。它不起作用。

需要有人检查代码和帮我弄清楚这里可能出现的错误。

Sub pivot()

Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("Data")
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column

Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="Status")
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="Status")

With ActiveSheet.PivotTables("Status").PivotFields("Region")
    .Orientation = xlRowField
    .Position = 1
End With

With ActiveSheet.PivotTables("Status").PivotFields("Final Owner")
    .Orientation = xlColumnField
    .Position = 1
End With

With ActiveSheet.PivotTables("Status").PivotFields("Incident ID")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlCount
    .NumberFormat = "#,##0"
    .Name = "Count"
End With

End Sub

1 个答案:

答案 0 :(得分:0)

尝试将PivotCache行修改为:

Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange.Address(False, False, xlA1, xlExternal)). _
            CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), TableName:="Status")