Мне нужно использовать сводную таблицу дописать мой макрос для автоматизации отчета.
Я искал много разных способов и решений, но пока никто не работал.
Вот моя попытка использовать макро-рекордер, обычно я этого избегаю, но не смог:
Cells.Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"1!R1C1:R1048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle2!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
Sheets("Tabelle2").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("PlatzID/Gerät")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("Tagabfluss"), "Anzahl von Tagabfluss", xlCount
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Anzahl von Tagabfluss" _
)
.Caption = "Summe von Tagabfluss"
.Function = xlSum
End With
Range("E34").Select
Я записал его с помощью устройства записи макросов, но воспроизведение не работает. Я получаю сообщение об ошибке:
Ошибка выполнения 5 Неверный вызов процедуры или аргумент
Это может быть вызвано неправильным использованием xlPivotTableVersion
, но я проверил, и тот, который я использую, совпадает.
Вот то, что я сделал из учебника, но я не могу понять, что вызывает ошибки:
'Declare Variables
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
'Declare Variables
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("1")
'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 PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="PivotTable2")
'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(, 1), TableName:="PivotTable2")
'Insert Row Fields
With ActiveSheet.PivotTables("PivotTable2").PivotFields("PlatzID/Gerät")
.Orientation = xlRowField
Position = 1
End With
' With ActiveSheet.PivotTables("PivotTable2").PivotFields("Month")
'.Orientation = xlRowField
' .Position = 2
' End With
'Insert Column Fields
' With ActiveSheet.PivotTables("PivotTable2").PivotFields("Zone")
' .Orientation = xlColumnField
' .Position = 1
' End With
'Insert Data Field
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Tagesabfluss")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Revenue "
End With
'With pt
'With .PivotFields("PlatzID/Gerät")
'.Orientation = xlRowField
'.Position = 1
'End With
'.AddDataField .PivotFields("Tagabfluss"), "Summe von Tagabfluss", xlSum
'End With
Этот код теперь в основном большой беспорядок, потому что я пробовал много разных вещей, которые, как я думал, могли бы работать. Проблема в том, что он ничего не делает, кроме создания нового листа.
Любая помощь будет высоко ценится.