Pivottabelle - TOP10 und Rest
#11
Das geht aber nur, wenn es pro Land genau einen Datensatz gibt und man keine Pivottabelle verwendet, richtig? 
Oder sehe ich da gerade was nicht?
Antworten Top
#12
Hallo shift del,

danke dir für die Info. Aber die Originaldatei ist viel komplexer. Von daher geht das mit den beiden Spalten nicht.

Anbei ein Auszug wie sich die Originaldatei darstellt.

LG

Michael


Angehängte Dateien
.xlsx   Muster_Pivot TOP10_Auszug Originaldaten.xlsx (Größe: 14,75 KB / Downloads: 4)
Antworten Top
#13
Jetzt sind wir schon bei #12 und der dritten Beispieldatei.
Egal, ich habe meinen Vorschlag abgeliefert.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • Excel_F
Antworten Top
#14
Hallo zusammen,

ich habe im Internet folgenden Code für ein Makro gefunden.

Vielleicht geht das doch nur per Makro????

Code:

Code:
Sub PivotTop10GroupOther()
' Ermittelt die Top 10 der Pivotauswertung und gruppiert die restlichen zu Other
Dim wks As Worksheet
Dim pvTab As PivotTable, pvField As PivotField, strField As String
Dim Zelle As Range, rngOther As Range
Dim arrTop10() As String, iTop10 As Integer
Dim intFehler As Integer, strMsg As String
On Error GoTo Fehler
strField = "Markt" 'Name des Feldes, das ggf. zu Top10 und "Other" gruppiert wird
intFehler = 1
Set wks = ActiveWorkbook.Worksheets("Pivot01")  'Name ggf. anpassen!!
wks.Activate
intFehler = 2
Set pvTab = wks.PivotTables(1)
pvTab.RefreshTable
'ggf. vorhandene Gruppierung im Feld auflösen
intFehler = 3
Set pvField = pvTab.PivotFields(strField & "2") 'Name des gruppierten Feldes
If Not pvField Is Nothing Then
wks.Columns.Hidden = False
pvField.LabelRange.Select
Selection.Ungroup
End If
ResumeNotGrouped:
intFehler = 4
Set pvField = pvTab.PivotFields(strField)
pvField.ClearAllFilters
'   'Top10-Filter setzen
intFehler = 5
pvField.PivotFilters.Add Type:=xlTopCount, DataField:= _
pvTab.PivotFields("Summe von Umsatz"), Value1:=10 '"Umsatz" ggf. anpassen
'Top 10 - Werte in Array speichern
ReDim arrTop10(1 To pvField.DataRange.Rows.Count)
iTop10 = 0
For Each Zelle In pvField.DataRange
iTop10 = iTop10 + 1
arrTop10(iTop10) = Zelle.Text
Next
'Filter wieder zurücksetzen
pvField.ClearAllFilters
'Zellen mit Label außerhalb Top 10 in Range-Objekt sammeln
For Each Zelle In pvField.DataRange
For iTop10 = 1 To UBound(arrTop10)
If arrTop10(iTop10) = Zelle.Text Then
Exit For
End If
Next
If iTop10 > UBound(arrTop10) Then
If rngOther Is Nothing Then
Set rngOther = Zelle
Else
Set rngOther = Application.Union(rngOther, Zelle)
End If
End If
Next
If rngOther Is Nothing Then
'alle Items in Top 10
Else
'Other-Items gruppieren
rngOther.Select
Selection.Group
intFehler = 6
'Gruppe umbenennen und Details ausbenden
pvTab.PivotFields(strField & "2").PivotItems("Gruppe1").Caption = "Other"
pvTab.PivotFields(strField & "2").PivotItems("Other").ShowDetail = False
'Zeilen nach Gesamtergebnis sortieren
'      pvTab.PivotFields(strField & "2").AutoSort xlDescending, "Summe von Umsatz"
'Spalte mit Feldname ausblenden
pvField.LabelRange.EntireColumn.Hidden = True
End If
Fehler:
With Err
strMsg = "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf
Select Case .Number
Case 0
Case 1004
Select Case intFehler
Case 1
MsgBox strMsg & "Im Code den Namen des Blattes mit dem Pivotbericht anpassen!!"
Case 2
MsgBox strMsg & "Kein Pivotbericht auf Blatt """ & wks.Name & """!!"
Case 3
Resume ResumeNotGrouped
Case 4
MsgBox strMsg & "Im Code den Namen des Pivotfeldes anpassen!!"
Case 5
MsgBox strMsg & "Im Code den Namen des Summenfeldes anpassen!!"
Case 6
MsgBox strMsg & "Im Code den Namen des Gruppenfeldes anpassen!!"
Case Else
MsgBox strMsg & "Wert von intFehler: " & intFehler
End Select
Case Else
MsgBox strMsg & "Wert von intFehler: " & intFehler
End Select
End With
Erase arrTop10
Set rngOther = Nothing: Set pvField = Nothing: Set pvTab = Nothing: Set wks = Nothing
End Sub
Sub PivotUngroupMarkt2()
'Gruppierung für gruppiertes Feld aufheben
Dim strField As String
strField = "Markt"
On Error GoTo Fehler
With ActiveWorkbook.Worksheets("Pivot01")
.Activate
.Columns.Hidden = False
.PivotTables(1).PivotFields(strField & "2").LabelRange.Select
Selection.Ungroup
End With
Fehler:
End Sub
Antworten Top
#15
Du solltest erstmal eine vernünftige Beispieldatei liefern

Zitat:ich habe eine Pivottabelle mit ca 40 Ländern und Umsatz. Ich möchte nach TOP 10 filtern, ist kein Problem weiß auch wie
Möchte aber in der letzten Zeile die restlichen Länder als Summe ausgewiesen bekommen.
Und Deine letzte Beispieldatei enthält genau 11 Länder und davon zwei ohne Umsatz
[-] Folgende(r) 1 Nutzer sagt Danke an Warkings für diesen Beitrag:
  • Excel_F
Antworten Top
#16
Danke an alle für die hilfreichen Beiträge.
Ich schau mal ob ich das alleine hinbekomme.

LG Michael
Antworten Top
#17
Ein Vorschlag basierend auf dem Link. Da die Beispieldaten nicht ausreichend waren, habe ich einige Datensätze hinzugefügt


.xlsx   Muster_Pivot TOP10_Auszug Originaldaten.xlsx (Größe: 235,04 KB / Downloads: 8)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste