Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Filter von Pivottabelle auf anderes Blatt verlagern?

2,987 views
Skip to first unread message

Markus Fuenfrocken

unread,
Mar 16, 2011, 11:24:04 AM3/16/11
to
** Da in de.comp.office-pakete.ms-office.excel anscheinend keiner
(mehr?) mitliest probiere ich es mal hier ***

Hallo,

ich habe auf einem Blatt eine Statistik, die sich aus den Zellen einer
Pivottabelle auf einem weiteren Blatt "bedient". Auf dem Blatt mit der
Pivottabelle habe ich Berichtsfilter definiert, die z.B. eine
Länderauswahl darstellt, wobei sich die Statistik auf Blatt 1 dann
automatisch aktualisiert.

Für den Anwender ist es aber mühsam, immer für einen Länderwechsel auf
das Pivotblatt zu gehen und dort das Filterdropdown zu bedienen, um dann
wieder auf die aktualisierte Statistk auf Blatt 1 zu wechseln -
kann man diesen Filter auf das Blatt mit der Statistik "verlagern"?

Danke für Tipps,
Markus

Robert Feldmann

unread,
Mar 16, 2011, 1:57:00 PM3/16/11
to
Hallo Markus,

vielleicht liegt es auch daran, das die meisten Glaskugeln ein nur
verschwommenes Bild deiner Absicht erkennen lassen.

Es ist nicht einfach, sich auf das beschriebene ein Bild zu machen.

Ich könnte mir vorstellen, dass Du ein paar Dropdowns auf dem Statistik
Blatt hinterlegst, die Du mit den Bereichsfiltern verknüpfst, z.B. über
VBA (Makro Aufzeichnung bietet einen ersten Hinweis). Ansonsten mal
überlegen ob es einen geeigneten Ablageort einer anonymisierten Variante
geben könnte, damit man sich ein Bild machen kann.

Viel Glück weiterhin,
Robert

--
Nicht was Du sagst ist entscheidend, sondern was verstanden wird.

Markus Fuenfrocken

unread,
Mar 17, 2011, 4:52:11 AM3/17/11
to
Am 16.03.2011 18:57, schrieb Robert Feldmann:
> Es ist nicht einfach, sich auf das beschriebene ein Bild zu machen.
> Ich könnte mir vorstellen, dass Du ein paar Dropdowns auf dem Statistik
> Blatt hinterlegst, die Du mit den Bereichsfiltern verknüpfst, z.B. über
> VBA (Makro Aufzeichnung bietet einen ersten Hinweis). Ansonsten mal
> überlegen ob es einen geeigneten Ablageort einer anonymisierten Variante
> geben könnte, damit man sich ein Bild machen kann.

Hallo,

ich hatte gehofft dass meine Beschreibung verständlich wäre... aber gut.
Hier eine simple Demodatei:
http://www.fuenfrocken.com/misc/demo_pivotfilter.xlsx (150 KB)

Ziel: Auf dem Blatt "Statistik" soll der Filter für den Wochntag aus dem
Pivotblatt erscheinen, damit ich zum Filtern des Wochentags nicht immer
auf das Pivoblatt wechseln muss.

Am besten wäre natürlich wenn das mit "Bordmitteln" ohne VBA ginge.

Gruß,
Markus

Robert Feldmann

unread,
Mar 18, 2011, 7:48:17 PM3/18/11
to
Hallo Markus,

Am 17.03.2011 09:52, schrieb Markus Fuenfrocken:
> Am besten wäre natürlich wenn das mit "Bordmitteln" ohne VBA ginge.

Leider habe ich auch keinen Weg gefunden den Pivotfilter mit einer
anderen Quelle zu verbinden. Die Fehlermeldung "keine Formel zulässig"
ist dir vermutlich auch schon begegnet. Einfach verschieben kann man das
Feld auch nicht.

Ich habe lediglich einen VBA Weg gefunden. Dazu platziere ich ein
ActiveX Steuerelement (Combobox) auf der Statistik Seite und lasse dort,
beim Click Ereignis, den gewünschten Filter als Listeneinträge auslesen.
So kann der Code auch für andere Filter verwendet werden.

Bei Auswahl eines Eintrags wird der Filter dann umgestellt. Auch das
geschieht mit neutralem Code und sollte sich einfach an andere Filter
anpassen lassen.

Ich hänge mal den benötigten Code hier rein, wenn Du den Code testen
möchtest wirst Du einige Zeilenumbrüche korrigieren müssen.

Ich kann dir bei Bedarf die Mustermappe auch zusenden.

Einziges Problem das ich nicht lösen konnte, beim ersten Aufruf der
Combobox wird diese einzeilig dargestellt (mit Scrollbuttons), beim
erneuten Aufklappen werden die Einträge dann gelistet. Habe nicht heraus
bekommen warum. Evtl. ein anderes Ereignis als Click verwenden?

Private Sub ComboBox1_Change()
Dim Pivotfilter
Set VAR_Pivot =
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems
Select Case ComboBox1.ListIndex
Case Is = 1
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(1).Visible = True
If Pivotfilter <> 1 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 2
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(2).Visible = True
If Pivotfilter <> 2 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 3
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(3).Visible = True
If Pivotfilter <> 3 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 4
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(4).Visible = True
If Pivotfilter <> 4 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 5
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(5).Visible = True
If Pivotfilter <> 5 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 6
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(6).Visible = True
If Pivotfilter <> 6 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 7
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(7).Visible = True
If Pivotfilter <> 7 Then
.PivotItems(Pivotfilter).Visible = False
Next
End With
Case Is = 8
With
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag")
For Pivotfilter = 1 To VAR_Pivot.Count
.PivotItems(Pivotfilter).Visible = True
Next
End With
End Select
Set VAR_Pivot = Nothing
End Sub


Private Sub ComboBox1_GotFocus()
Dim VAR_Pivot
Dim Zähler
Dim Pivotfilter
Set VAR_Pivot =
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems
Zähler = 1
ComboBox1.Clear
ComboBox1.AddItem "--- keine Auswahl ---", 0
For Each Pivotfilter In VAR_Pivot
ComboBox1.AddItem Pivotfilter, Zähler
Zähler = Zähler + 1
Next
If VAR_Pivot.Count > 10 Then
ComboBox1.ListRows = 10
Else
ComboBox1.ListRows = VAR_Pivot.Count + 1
End If
ComboBox1.ListIndex = 0
Set VAR_Pivot = Nothing
End Sub

Robert Feldmann

unread,
Mar 19, 2011, 6:56:42 PM3/19/11
to
Oder hier, eine kürzere Fassung.

Auch hier gilt, Zeilenumbrüche korrigieren, oder kurze Mitteilung, dann
sende ich das Funktionsmuster zu.

Private Sub ComboBox1_Change()
Dim Pivotfilter
Set VAR_Pivot =
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems

'da mindestens ein Filter gesetzt sein muss, mit dem setzen des zu
aktivierenden Filters starten


For Pivotfilter = 1 To VAR_Pivot.Count

If Pivotfilter = ComboBox1.ListIndex Then
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems(Pivotfilter).Visible
= True
Next
'dann alle anderen ausschalten


For Pivotfilter = 1 To VAR_Pivot.Count

If Pivotfilter <> ComboBox1.ListIndex Then
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems(Pivotfilter).Visible
= False
Next
'oder alle ein, falls "alle" (letzter Eintrag) gewählt wurde


For Pivotfilter = 1 To VAR_Pivot.Count

If VAR_Pivot.Count = ComboBox1.ListIndex Then
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems(Pivotfilter).Visible
= True
Next


Set VAR_Pivot = Nothing
End Sub


Private Sub ComboBox1_GotFocus()
Dim VAR_Pivot
Dim Zähler
Dim Pivotfilter
Set VAR_Pivot =
ThisWorkbook.Sheets("Pivot").PivotTables("PivotTable1").PivotFields("Wochentag").PivotItems
Zähler = 1
ComboBox1.Clear
ComboBox1.AddItem "--- keine Auswahl ---", 0

'liest alle Filterelemente in die Combobox ein


For Each Pivotfilter In VAR_Pivot
ComboBox1.AddItem Pivotfilter, Zähler
Zähler = Zähler + 1
Next

'setzt die Listeinträge auf max 10 fest


If VAR_Pivot.Count > 10 Then
ComboBox1.ListRows = 10
Else
ComboBox1.ListRows = VAR_Pivot.Count + 1
End If

'Aktivierung von "keine Auswahl" damit Change eintritt wenn ein
Filter gewählt wird.

Markus Fuenfrocken

unread,
Mar 22, 2011, 9:55:51 AM3/22/11
to
Am 19.03.2011 23:56, schrieb Robert Feldmann:
> Oder hier, eine kürzere Fassung.
[...]

Hallo Robert,

zunächst tausend Dank für die Mühe die Du Dir gemacht hast!
Ich werde das in den nächsten Tagen versuchen nachzuvollziehen und
auszuprobieren, bin mit VBA bisher kaum in Berührung gekommen und muss
mich deshalb dort ein wenig einarbeiten.

Gruß,
Markus

dibbler

unread,
Aug 6, 2014, 10:56:42 AM8/6/14
to
Hallo Markus,

etwas alt der Thread, aber vielleicht für die anderen, die vor einem ähnlichen Problem stehen...

Datenschnitt einfügen in dem Reiter mit deiner PT und diesen dann auf den Reiter mit deiner Statistik kopieren..

Das wars schon.



fa.dr...@gmail.com

unread,
Nov 10, 2014, 11:21:09 AM11/10/14
to
Hallo liebe Excel Gemeinde,
ich bin gerade dabei einen wie oben beschreibenen Pivot Filter auf ein seperates Blatt zu legen. Leider will das ganze noch nicht so wirkich klappen.
Ich habe den Code von Robert genommen und ihn auf meine Arbeitsmappe angepasst. Da ich nach 3 verschiedenen Kriterien sortieren möchte, wäre es eine große Hilfe wenn der 2te Filter nur noch die Einträge in der Kombobox anzeigen würde die nach Eingrenzung der ersten Box möglich wären. Erster Filter ist Region...Wenn ich hier Europa auswähle soll er in der 2ten Box Brands nur noch Marken anzeigen die in Europa gelistet sind.
Leider bin ich in Sachen VBA nicht ganz so fit und würde mich sehr über eine Hilfestellung freuen.

LG
Fabian
0 new messages