VBA-Code für return pivot-Tabelle, Zelle, Zeile, Spalte, Seite und die Felder und Elemente
Ich versuche, code zu schreiben, wird wieder die Zeilen -, Spalten-und Seitenfelder und Gegenstände nach, die ich hervorgehoben haben, dass eine Zelle in der Werte-Bereich der pivot-Tabelle. Zum Beispiel, wenn ich wählen Sie eine Zelle mit einem Wert von $1000, ich würde gerne den code ziehen Sie die Zeile Feld und Element (zum Beispiel würde das Feld Abteilung und Position wäre die Finanzen), Spalte, Feld und Element (zum Beispiel würde das Feld Konto und posten wäre Werbung) und die Seite, Bereich und Element (zum Beispiel würde das Feld Firma und Position wäre XYZ, Inc.).
Dieser scheint, wie es sollte ziemlich einfach sein, weil, wenn Sie mit dem Mauszeiger auf eine beliebige Zelle in einer pivot-Tabelle, wird es zeigen Ihnen die drilldown-Informationen in der contextures box, aber ich habe eine harte Zeit Bearbeiten der pivot-Tabelle-Objekte, weil es nicht zu sein scheinen viel über Sie geschrieben online oder von microsoft.
Scheint es, wie die pivotline oder pivotlines Objekt könnte das sein, was ich Suche, aber ich kann nicht herausfinden, wie es zu benutzen.
Ich ursprünglich nahm dieses Konzept und es funktionierte gut, bis ich erkannte, dass ein rowfields' index nicht notwendigerweise die position in der Zeile Feld, ich musste also Schrott.
Sub ActualDetailDrill()
'after sub is completed, make this sub called when a cell in a pivot table is double-clicked.
Dim NumOfRowItems As Integer
Dim NumOfColItems As Integer
Dim NumOfPageFields As Integer
Dim Field As PivotField
Dim ActualDrillActiveCell As Range
Set ActualDrillActiveCell = Sheets("ActualDrill SQL Build").Range("A1")
NumOfRowItems = ActiveCell.PivotCell.RowItems.Count
i = 1
Do Until i > NumOfRowItems
ActualDrillActiveCell.Value = ActiveCell.PivotTable.RowFields(i).Name
ActualDrillActiveCell.Offset(0, 1).Value = ActiveCell.PivotCell.RowItems(i).Name
ActualDrillActiveCell = ActualDrillActiveCell.Offset(1, 0)
i = i + 1
Loop
End Sub
Jede Hilfe wäre sehr geschätzt. Dies ist einer der letzten Schritte in einem großen Projekt an dem ich arbeite, wird sehr hilfreich sein, um die Firma für die ich arbeite.
Danke, Doug. Dies ist sehr hilfreich, aber ich versuche das Gegenteil von dem, was gesprochen wird in diesem link. Der Artikel setzt Voraus, Sie wissen, die Feld-und Elemente-Namen, die Sie möchten, ziehen Sie die Daten zurück. Ich weiß schon, die Daten-Bereich (eine Zelle statt, in die mehrere Zellen) und das Feld (Spalte, Zeile und Seite) und Gegenstände für den Datenbereich. Würde der Autor, Jon, ein guter Mensch zu sein, danach zu Fragen, da er scheint vertraut mit dem code für pivot-Tabellen? Danke!
InformationsquelleAutor jones-chris | 2016-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist das Wochenende und ich hatte einige Zeit, um in diese zu Graben interessante Frage. Ich glaube, Sie waren ziemlich nah mithilfe
RowItems
undColumnItems
. DiePivotTable.RowFields
sind mehr allgemein, obwohl, und nicht an derPivotCell
Ebene.Hasse ich das arbeiten mit der Seite Felder, aber denke, das ist die richtige Logik für diese:
Wenn Sie nicht bereits haben, sollten Sie das VBE - Fenster. Es ist toll, für den Sie einen Drill-down (und sichern) in der pivot-Tabelle Objekt-Modell. Das ist, wie ich sah, dass ein
ColumnItem
ist einPivotItem
derenParent
ist diePivotField
.Vielen Dank für das lassen mich wissen. Ja, hoffentlich können wir Fliegen unter dem radar-mit diesen frivolen, noch freundliche Kommentare.
Nochmal danke für den Kommentar, Doug. Ich hatte einen moment, um zu versuchen, diese heute und ich mag es, wie wird es wieder in die pivotitems an jeder sichtbaren Ebene, aber, dass die Hälfte von dem, was ich Suche. Ich will auch die rowfield, columnfield, pagefield, und datafield an, die mit jedem Element. Macht es mehr Sinn, wenn ich sage, was ich versuche zu tun, insgesamt mit diesem code. Ich bin versucht, ziehen Sie die Feldnamen und-Elemente für diese Felder, so dass ich können Sie mehr code schreiben, kompilieren Sie den Feldnamen und die Elemente in einer SQL-Anweisung zur Abfrage auf eine andere Datenbank für die Details hinter die Linie. Hilft das klären?
Ich habe gerade editiert und Hinzugefügt, die
ColumnItem
undRowitem
ElternPivotField
Logik. Meiner Meinung nach das Daten-Feld ist bereits behandelt, dervtCell.PivotField.SourceName
. Ich weiß nicht, was Sie wollen, für die-Seite-Felder. Es scheint, wie das SQL ist so etwas wieWHERE PageField_1 IN (PagePvtItem1, PagePvtItem2, etc)
.Perfekt! Ich kann auf jeden Fall optimieren, um eine SQL-Anweisung. Ich kann mich definitiv daran versuchen, die Parent-und Child-Eigenschaften, kam aber immer ein Fehler aus irgendeinem Grund - vielleicht war ich zu frustriert von diesem Punkt lol.
InformationsquelleAutor Doug Glancy