Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivot sortieren (fcs Code)

Pivot sortieren (fcs Code)
28.05.2014 11:10:47
Marc
Hallo liebe Forumsgemeinde, hi fcs.
Ich möchte meine Pivottabellen per Makro sortieren und bin auf einen alten Code gestoßen der mir schon sehr weiter hilft da er auch im Excel 2010 super läuft.
https://www.herber.de/forum/archiv/972to976/975787_Pivot_Tabelle_sortieren_alle_Felder_per_VBA.html
1.Meine Frage geht nun in Richtung Erweiterung der Sortieroptionen.Bisher wird alles absteigend sortiert (descending).
Ist es möglich einen Schritte einzubauen der die Sortierart festlegt (weitere MsgBoxen) ?
- Aufsteigend
- Absteigend
- Top 10 (dies ist ja eigentlich ein Filter wenn ich da richtig sehe)
2. Ist es weiterhin möglich, auch nacheinander nach 2 Spalten zu sortieren (z.B. erst nach Menge, dann nach Umsatz)?
Für eine Antwort wäre ich sehr dankbar! Denn alleine komme ich überhaupt nicht weiter.
Viele Grüße, Marc

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot sortieren (fcs Code)
28.05.2014 18:04:49
fcs
Hallo Marc,
ich kann mich kaum noch erinnern, dass ich das Makro geschrieben hab.
zu. 1.
die Funktion -Sortierrichtung auswählen- einzubauen ist kein großes Problem. Da muss man "nur" die schon vorhandene MsgBox, die das gewählte Feld anzeigt, um-/nachrüsten.
Den Top-Filter zu programmieren wird schon etwas aufendiger, denn hier müssen außer dem Feld noch vier weitere Parameter vorgegeben/ausgewählt werden.
Wenn man es richtig macht ist man mit einer Rechts-Klick-Bewegen-Links-Klick-Mausaktion im Dialogfenster. Da lohnt eine Programmierung nur wenn man für die beiden Felder und die anderen Parameter feste Vorgaben macht.
zu 2.
Grundsätzlich kann man zwei Zeilenfelder nach unterschiedlichen Datenfeldern sortieren, aber das erfordert einen komplett anderen Ansatz bei der Programmierung, da bei zwei Sortierungen 2 mal das zu sortierende Zeilenfeld mit seinen Sortierkriterien (Richtung, Datenfeld) ausgewählt/vorgegeben werden muss. Das ist dann schon fast so als ob man den kompletten Excel-Sortierdialog in der Funktion nachbaut und so etwas mache ich nicht bis ungern. Mit festen Vorgaben (z.B. sortiere das 1. Zeilenfeld aufsteigend nach dem 1. Datenfeld, sortiere das 2. Datenfeld nach dem 2. Datenfeld absteigend. So etwas kann man allgemein als Makro machen. Aber eine eierlegende Wollmilchsau zu basteln ist nicht so mein Ding.
Exceldialoge sind dazu da, dass sie benutzt werden; auch wenn es manchmal ein langer etwas umständlicher Weg ist, bist man am Ziel ist.
Gruß
Franz

Anzeige
AW: Pivot sortieren (fcs Code)
28.05.2014 20:27:16
Marc
Hallo Franz. Ja ist schon eine Weile her und trotzdem top.
Danke für Deine Antwort und die Einschätzungen. Da hab ich mehr verlangt als ich dachte. Konnte leider nicht beurteilen wie aufwändig das alles ist..sorry. Stimme zu: es muss schon im Verhältnis zum Nutzen bleiben. Ich kann die Sortier - Dialoge unseren Usern erlären-so schwer ist das die Filterbedienung "per Hand" ja nun auch wieder nicht;) 1.2. und 2. gestrichen.
zu. 1.
die Funktion -Sortierrichtung auswählen- einzubauen ist kein großes Problem. Da muss man "nur" die schon vorhandene MsgBox, die das gewählte Feld anzeigt, um-/nachrüsten.
Wie aufwändig wäre denn eine "Umrüstung"? Würde gern auch irgendwie Danke sagen können.
Marc

Anzeige
AW: Pivot sortieren (fcs Code)
28.05.2014 22:41:31
fcs
Hallo Marc,
hier die Anpassung mit Wahl der Sortierrichtung in einer MsgBox.
Falls "Abbrechen" nicht möglich sein soll, dann den Paramer "Buttons" ändern von vbYesNoCancel in vbYesNO.
Gruß
Franz
Sub SortierePivot()
Dim SortierRef As Range
Dim SortierRefField As String
Dim pvField As PivotField, pvTable As PivotTable
Dim bolSortiert As Boolean, intFehler As Integer, strMsg As String
Dim varSortorder
On Error GoTo Fehler
Auswaehlen:
intFehler = 1
Set SortierRef = Application.InputBox("Bitte Sortierreferenz markieren:" & vbLf & _
"Abbrechen verläßt die Sortierung.", "Sortierreferenz", Type:=8)
Application.ScreenUpdating = False
Application.EnableEvents = False
If SortierRef Is Nothing Then
Exit Sub
Else
intFehler = 2
SortierRefField = SortierRef.PivotField
varSortorder = MsgBox("Sortierrichtung des Feldes aufsteigend?" & vbLf _
& "(Ja = aufsteigend, Nein =absteigend)", _
Buttons:=vbYesNoCancel + vbQuestion, _
Title:="Sortierfeld: " & SortierRefField)
Select Case varSortorder
Case vbYes
varSortorder = xlAscending
Case vbNo
varSortorder = xlDescending
Case vbCancel
Exit Sub
End Select
intFehler = 3
Set pvTable = ActiveSheet.PivotTables(1)
For Each pvField In pvTable.RowFields
intFehler = 4
Select Case pvField.Name
Case "Werte" ', "Data", "Values" 'mehrere Datenfelder in Zeilenbeschriftungen -  _
sprachenabhängig
' MsgBox "Feld " & pvField.Name ,,"Makro: SortierePivot'Testzeile
Case Else
pvField.AutoSort varSortorder, SortierRefField
End Select
Next
bolSortiert = True
intFehler = 0
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
If bolSortiert = True Then
MsgBox ("PivotTabelle ist sortiert")
End If
Exit Sub
Fehler:
strMsg = "Fehler " & Err.Number & " ist aufgetreten!" & vbLf & Err.Description
Select Case intFehler
Case 1 'Keine Zelle selektiert
MsgBox strMsg & vbLf & vbLf & "Fehler bei Selektion, keine Zelle selektiert!"
Case 2 'Zelle außerhalb der Pivot-Tabelle selektiert
If MsgBox(strMsg & vbLf & vbLf & SortierRef.Value _
& ": Zelle außerhalb der PivotTabelle wurde selektiert" _
& vbLf & vbLf & "Sortierreferenz neu markieren?", vbYesNo) = vbYes Then
Application.ScreenUpdating = True
Resume Auswaehlen
End If
Case 3
MsgBox strMsg & vbLf & vbLf & "Pivottabelle fehlt"
Case 4 'Unzulässiges Feld in Pivot-Tabelle selectiert
If MsgBox(strMsg & vbLf & vbLf & "Feldzuweisung bei Sortierung fehlerhaft" _
& vbLf & vbLf & "Sortierreferenz neu markieren?", vbYesNo) = vbYes Then
Application.ScreenUpdating = True
Resume Auswaehlen
End If
Case Else
MsgBox strMsg
End Select
End Sub

Anzeige
AW: Pivot sortieren (fcs Code)
28.05.2014 23:40:27
Marc
Wow...ein großes Danke schonmal.
Werde das asap mit den echten Daten ausprobieren sobald ich wieder am Firmennetz bin :)
Man kann als nicht VBAler zwar schon grob lesen wo was passiert im Code, doch selbst mit nem Kurs hätte ich keine Chance..das dauert Jahre bis man da angelangt ist.
Schätze es daher sehr, wenn die die es können, in den Foren ihr Wissen teilen - keineswegs selbstverständlich!
Schönen morgigen Feiertag und VG
Marc

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige