在与源数据 (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
我有一些数据是数据透视表的来源 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