Я пытаюсь создать довольно простую сводную таблицу, но у меня проблемы с созданием сводной кэш-памяти. И источник данных и тип данных, кажется, правильно, но я получаю ошибку. Я искал похожие проблемы, но ни один из подтвержденных ответов не помог мне.
Sub Macro1()
'
' Macro1 Macro
'
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("Regions").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "Regions"
Application.DisplayAlerts = True
Set PSheet = Worksheets("Regions")
Set DSheet = Worksheets("Sheet1")
'Define Data Range
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 Pivot table Cache
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange).CreatePivotTable(TableDestination:=PSheet.Cells(2, 2),TableName:="SalesPivotTable")
Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(1, 1), TableName:="SalesPivotTable")
'Insert Row Fields
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("ID")
.Orientation = xlRowField
.Position = 1
End With
'Insert Data Field
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Pkt avg")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.NumberFormat = "0"
.Name = "pkt avg"
End With
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Number of apt")
.Orientation = xlDataField
.Position = 2
.Function = xlCount
.NumberFormat = "0"
.Name = "Apt num"
End With
End Sub
Я получаю ошибку несоответствия типов здесь Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange).CreatePivotTable(TableDestination:=PSheet.Cells(2, 2),TableName:="SalesPivotTable")