Как создать сводную таблицу? - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно использовать сводную таблицу дописать мой макрос для автоматизации отчета. Я искал много разных способов и решений, но пока никто не работал.

Вот моя попытка использовать макро-рекордер, обычно я этого избегаю, но не смог:

 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

Этот код теперь в основном большой беспорядок, потому что я пробовал много разных вещей, которые, как я думал, могли бы работать. Проблема в том, что он ничего не делает, кроме создания нового листа.

Любая помощь будет высоко ценится.

...