2016-08-05 57 views
1

Ich habe einige Daten, die die Quelle für eine Pivot-Tabelle ist, die ich mit dem folgenden VBA-Skript erstellen.Erstellen Sie Pivot-Tabelle im selben Arbeitsblatt wie die Quelldaten (Excel VBA)

Der Code erstellt ein neues Blatt und generiert Pivot-Tabelle, aber ich möchte, dass die Pivot-Tabelle im selben Blatt vorhanden ist, in dem sich die Quelldaten befinden.

Es muss auch überprüft werden, wo vorhandene Daten sind und müssen eine leere Zelle auswählen.

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 
+0

Ist dies Ihr gesamter Code? Der obige Code erstellt kein neues Blatt. Können Sie den vollständigen Code teilen? – Siva

Antwort

1

Hier ist ein sehr einfaches Beispiel dafür, wie eine Pivot-Tabelle in Code zu erstellen, basierend auf einer Range der Quelldaten - es ist nur ein paar zusätzliche Zeilen anstatt den Assistenten in Ihrer Frage gemäß dem Code zu verwenden.

Um die Tabelle von Ihren Quelldaten zu trennen, prüft sie die Anzahl der Spalten in den Quelldaten und fügt dann 2 Spalten hinzu, d. H. Es wird eine einzige leere Spalte zwischen den Quelldaten und der Pivot-Tabelle geben.

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 
+0

** Danke Robin Mackenzie ** Ihre Antwort hat geholfen. Das war genau etwas, wonach ich gesucht habe. Danke noch einmal !!! – techNikunj

+0

Kein Problem - mein Vergnügen –