Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Pivot sortieren
marco
Hi,
ich möchte eine Pivottabelle sortieren. Problem: Das Argument, also das nach dem sortiert wird, muss ja ein String sein und zwar z.B. "Summe von x". eig kein Thema, weil ich kann ja immer den Feldnamen nehmen und "Summe von " davorschreiben, dann geht das universell. Aber mein Kollege hat nun eine andere Sprache für sein Excel eingestellt....Problem...
Zur Erläuterung - so sortiere ich meine PTabelle:
With ThisWorkbook.Sheets(sheetName).PivotTables(pName)
.DataPivotField.Orientation = xlColumnField
.DataPivotField.position = 1
.PivotFields(RDB.Cells(4,12).Value).AutoSort _
xlDescending, "Summe von x"
End With
"RDB.Cells(4,12).Value" ist dabei die Spaltenüberschrift der zu sortierenden Spalte. Jetzt könnte ich ja auch für "Summe von x" den Zellbefehl verwenden, also "Summe von " & rdb.cells(4,15)", aber das geht nicht, weil mein Kollege ja englisches Office hat und es dor "Sum of..." heißen müsste.
Was tun?Gibts da ne Konstante oder sowas die das "Summe von" enthält?
Danke für nen Tip

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Pivot sortieren
17.06.2011 08:06:42
fcs
Hallo marco,
man kann den Namen des Summenfeldes indirekt ermitteln.
Gruß
Franz
Sub aaTest()
Dim sSumField As String, lSpalte As Long, lZeile As Long
'Testdaten
Dim sheetName, pName
sheetName = "Tabelle2":  pName = 1
'Testdaten
With ThisWorkbook.Sheets(sheetName).PivotTables(pName)
.DataPivotField.Orientation = xlColumnField
.DataPivotField.Position = 1
'    .PivotFields(RDB.Cells(4, 12).Value).AutoSort xlDescending, "Summe von x"
'    "Summe von x" den Zellbefehl verwenden, also "Summe von " & rdb.cells(4,15)"
lZeile = 4 'Zeile mit den Feldnamen
lSpalte = 15 'Nummer der Spalte nach der sortiert werden soll
sSumField = FindSumField(pTab:=ThisWorkbook.Sheets(sheetName).PivotTables(pName), _
sDataField:=RDB.Cells(lZeile, lSpalte).Value)
If sSumField  "" Then
.PivotFields(RDB.Cells(12, lZeile).Value).AutoSort xlDescending, sSumField
Else
MsgBox "Für Spalte """ & RDB.Cells(lZeile, lSpalte).Value _
& """ konnte kein Summenfeld gefunden werden!", _
vbInformation + vbOKOnly, "Pivot-Tabelle sortieren"
End If
End With
End Sub
Function FindSumField(pTab As PivotTable, sDataField As String) As String
Dim pField As PivotField, sName As String
'Summen-Datenfeld in Pivot-Tabelle suchen
For Each pField In pTab.DataFields
sName = pField.Name
If InStr(1, LCase(sName), "sum") > 0 And InStr(1, sName, sDataField) > 0 Then
FindSumField = sName
Exit For
End If
Next
End Function

Anzeige
AW: Pivot sortieren - Korrektur
17.06.2011 08:12:04
fcs
Hallo Marco,
in der Hauptprozedur war noch ein Fehler (Spalten-Zeilen-Dreher)
Gruß
Franz
Sub aaTest()
Dim sSumField As String, lSpalte As Long, lZeile As Long
'Testdaten
Dim sheetName, pName
sheetName = "Tabelle2":  pName = 1
'Testdaten
With ThisWorkbook.Sheets(sheetName).PivotTables(pName)
.DataPivotField.Orientation = xlColumnField
.DataPivotField.Position = 1
'    .PivotFields(RDB.Cells(4, 12).Value).AutoSort xlDescending, "Summe von x"
'    "Summe von x" den Zellbefehl verwenden, also "Summe von " & rdb.cells(4,15)"
lZeile = 4 'Zeile mit den Feldnamen
lSpalte = 15 'Nummer der Spalte nach der sortiert werden soll
sSumField = FindSumField(pTab:=ThisWorkbook.Sheets(sheetName).PivotTables(pName), _
sDataField:=RDB.Cells(lZeile, lSpalte).Value)
If sSumField  "" Then
.PivotFields(RDB.Cells(lZeile, 12).Value).AutoSort xlDescending, sSumField
Else
MsgBox "Für Spalte """ & RDB.Cells(lZeile, lSpalte).Value _
& """ konnte kein Summenfeld gefunden werden!", _
vbInformation + vbOKOnly, "Pivot-Tabelle sortieren"
End If
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige