Ich bin neu in VBA und habe sehr Grundkenntnisse. Ich habe eine Pivot-Tabelle, die die Anzahl der Schüler nach Einschreibedatum gruppiert berechnet und aus Spalten besteht Brand Ids
Ich möchte eine Reihe an das Ende des Pivots verschiebenTabelle und die Anzahl der Zeilen ändert sich ständig. Ich habe versucht, den folgenden Code zu verwenden, aber ich kann ihn nur verwenden, wenn die Anzahl der Zeilen in der Pivot-Tabelle konstant ist. Kann mir bitte jemand helfen, die Zeile an das Ende der Tabelle zu verschieben, obwohl die Anzahl der Zeilen nicht konstant ist?
ActiveSheet.PivotTables("StudentCount").PivotSelect ""En_Date"["(blank)"]", _
xlDataAndLabel + xlFirstRow, True
ActiveSheet.PivotTables("StudentCount").PivotFields("En_Date").PivtoItems( _
"(blank)").Position = 20
"In current sheet I need to move to 20 but actually 20 is not constant
ActiveSheet.PivotTables("StudentCOunt").PivotSelect "En_Date", xlButton, True
Ich habe auch den folgenden Code ausprobiert, aber er funktioniert nicht:
Dim LS as LONG
LS = ActiveSheet.PivotTable("StudentCount").TableRange2.Rows.Count
ActiveSheet.PivotTables("StudentCount").PivotSelect ""En_Date"["(blank)"]", _
xlDataAndLabel + xlFirstRow, True
ActiveSheet.PivotTables("StudentCount").PivotFields("En_Date").PivtoItems( _
"(blank)").Position = "& (LS - 1)"
ActiveSheet.PivotTables("StudentCOunt").PivotSelect "En_Date", xlButton, True
Pivot-Tabelle:
Anzahl der Studenten Datum A1 A2 A3 A4Leere Gesamtübersicht leer 69 86 23 45 223 01.01.2014 2 25 3 1 31 02/01/2014 1 2 5 8 16 Gesamtsumme 71 112 28 51 262
Antworten:
1 für die Antwort № 1Hallo, um deine Frage zu beantworten, brauchst du nicht VBA
um dies zu tun.
Der Grund, warum sich Ihr Pivot als solcher verhält, ist Ihr Dates
sind eigentlich nicht Dates
aber Dates Entered as Text
.
Siehe unten neu erstellte Daten:
Geben Sie es erneut als aktuell ein dates
wird dein Problem lösen.
Also nach dem Wechsel der Text Dates
zu aktuell Dates
, dein Pivot sortiert deine Reihe, wie du magst.
Siehe unten:
Hoffe, die Lösung, die ich vorgestellt habe, hilft Ihnen ein bisschen.
Zusätzlich: Wenn es jedoch nicht bequem ist, alle Daten erneut einzugeben, versuchen Sie es mit folgendem Code:
Dim i As Integer
With ActiveSheet.PivotTables("StudentCount").PivotFields("En Date")
For i = 1 To .PivotItems.Count
If .PivotItems(i) = "(blank)" Then .PivotItems(i).Position = .PivotItems.Count
Next
End With
Der obige Code durchläuft einfach alle PivotItems
, schaut nach (blanks)
.
Es ändert dann seine Position in die letzte Position, die gleich ist .PivotItems.Count
.
Hoffe das funktioniert für dich.