Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在与源数据(Excel VBA)相同的工作表中创建透视表_Vba_Excel_Pivot_Pivot Table - Fatal编程技术网

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

在与源数据(Excel VBA)相同的工作表中创建透视表,vba,excel,pivot,pivot-table,Vba,Excel,Pivot,Pivot Table,我有一些数据,这些数据是我用下面的VBA脚本构建的数据透视表的源 代码正在创建一个新的工作表并在那里生成透视表,但我希望透视表出现在源数据所在的同一工作表中 它还需要检查现有数据的位置,并且必须选择一个空单元格 Sub ApplyPivot() ActiveWorkbook.Sheets("NOIDA").Select Range("A1").Select Set objTable = Sheet1.PivotTableWizard Set objField = objTable.Pivot

我有一些数据,这些数据是我用下面的VBA脚本构建的数据透视表的源

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

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

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

下面是一个非常基本的示例,说明如何基于源数据的
范围
在代码中创建数据透视表-只需多出几行,而不是根据问题中的代码使用向导

为了使表远离源数据,它检查源数据中的列数,然后添加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

这是你的全部代码吗?上述代码不会创建新工作表。你能分享完整的代码吗?谢谢Robin Mackenzie你的回答很有帮助。这正是我要找的东西。再次感谢!!!没问题,我很乐意