与源数据(Excel VBA)在同一工作表中创build数据透视表

我有一些数据,这是我用以下VBA脚本构build的数据透视表的源代码。

代码是创build一个新的工作表,并在那里生成数据透视表,但我希望透视表出现在源数据所在的同一工作表中。

它还需要检查,直到现有的数据是什么,并且必须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在代码中创build数据透视表 – 这只是一些额外的行,而不是在您的问题中使用向导。

为了将表格清除源数据,它将检查源数据中的列数,然后添加2列,即在源数据和数据透视表之间会有一个空列。

 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