在与源数据 (Excel VBA) 相同的工作表中创建数据透视表 table

Create pivot table in the same worksheet as the source data (Excel VBA)

我有一些数据是数据透视表的来源 table 我正在使用以下 VBA 脚本构建。

代码正在创建一个新的 sheet 并在那里生成枢轴 table 但我希望枢轴 table 出现在源数据所在的同一 sheet 中.

它还需要检查现有数据的位置,并且必须 select 一个空单元格。

Sub ApplyPivot()

ActiveWorkbook.Sheets("NOIDA").Select
Range("A1").Select
Set objTable = Sheet1.PivotTableWizard

Set objField = objTable.PivotFields("sector")
objField.Orientation = xlRowField

Set objField = objTable.PivotFields("number")
objField.Orientation = xlColumnField

Set objField = objTable.PivotFields("quantity")
objField.Orientation = xlDataField
objField.Function = xlCount
objField.NumberFormat = " ######"

End Sub

这是一个非常基本的示例,说明如何根据 Range 源数据在代码中创建数据透视表 Table - 它只是几行额外的代码,而不是根据代码使用向导在你的问题中。

为了清除源数据中的 table,它会检查源数据中的列数,然后添加 2 列,即源数据和枢轴 table.

Option Explicit

Sub ApplyPivotOnSameSheet()

    Dim wsTarget As Worksheet
    Dim rngData As Range
    Dim rngPivotTarget As Range
    Dim objCache As PivotCache
    Dim objTable As PivotTable
    Dim objField As PivotField

    'create pivot table in code (no wizard) on same sheet
    Set wsTarget = ThisWorkbook.Sheets("NOIDA")
    'set range to build table from
    Set rngData = wsTarget.Range("A1").CurrentRegion
    'set range for left-hand corner of pivot clear of source data by 1 column
    Set rngPivotTarget = wsTarget.Cells(1, rngData.Columns.Count + 2)
    'create cache from data
    Set objCache = ThisWorkbook.PivotCaches.Create(xlDatabase, rngData)
    'create table from cache
    Set objTable = objCache.CreatePivotTable(rngPivotTarget)

    'your original code
    Set objField = objTable.PivotFields("sector")
    objField.Orientation = xlRowField

    Set objField = objTable.PivotFields("number")
    objField.Orientation = xlColumnField

    Set objField = objTable.PivotFields("quantity")
    objField.Orientation = xlDataField
    objField.Function = xlCount
    objField.NumberFormat = " ######"

End Sub