PDA

Vollständige Version anzeigen : Wie kann ich beim Filtern per Marko EIN Element abwählen


Steffen_Krause
27.06.2014, 11:41
Hallo zusammen,

ich habe eine Frage zu Filter setzen im Excel 2010.

Ausgangspunkt ist eine Liste mit ca. 2000 Einträgen mit darübergelegtem Filter.
Ich möchte nun per Makro einen einzigen Eintrag aus diesen 2000 abwählen, so dass mir nur noch 1999 angezeigt werden.

Das Problem darin ist folgendes:
Möchte ich ALLE Elemente im Filter auswählen ist der Code ziemlich einfach:
ActiveSheet.Range("$A$1:$A$22").AutoFilter Field:=1


Möchte ich nun aber aus einer Liste von z.B. 21 Zahlen die Zahl 8 abwählen, hat man folgendes Problem: In VBA wird nicht gesagt "wähle das Element 8 ab", sondern andersherum: "Wähle 1,2,3,4,5,6,7,9,etc.":
ActiveSheet.Range("$A$1:$A$22").AutoFilter Field:=1, Criteria1:=Array("1","10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "2", "20", "21", "3", "4", "5", "6", "7", "9"), Operator:=xlFilterValues


An sich wäre das ja kein Problem. Allerdings sprengt mir eine Liste von 2000 Einträgen mein VBA und ich bekomme bereits beim Aufzeichnen des Makros die Fehlermeldung:
Zu viele Zeilenfortsetzungen
In VBA bekomme ich angezeigt, dass 235 Elemente im Makro drin stehen. Das reicht leider bei weitem nicht aus. :-)


Leider ist es auch nicht möglich alle Elemente einmal mit der Hand einzugeben, da sich die Liste der Elemente immer wieder verändert.

Hat jemand von euch eine Idee, wie man das Problem lösen könnte?

Über ne Antwort würde ich mich freuen.
Steffen Krause

Mc Santa
27.06.2014, 11:56
Hallo,

funktioniert es so nicht bei dir?
ActiveSheet.Range("$A$1:$A$22").AutoFilter Field:=1, Criteria1:="<>8" ', Operator:=xlFilterValues 'der letzte Teil geht bei mir in 2003 nicht


VG

Steffen_Krause
27.06.2014, 12:26
im kleinen funktioniert´s so. :-)
ich werd´s mal mit der großen Liste ausprobieren.

Steffen_Krause
02.07.2014, 15:27
Hallo zusammen,
leider war es doch nicht der richtige Ansatz.
der Fehler liegt darin, dass wir es hier nicht mit einem normalen Filter zu tun haben, sondern mit einem Berichtsfilter einer Pivot-Tabelle

Wähle ich hier alle Elemente aus, sieht der Code so aus:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Debitoren].[DebitorName].[DebitorName]").VisibleItemsList = Array( _
"")

Wähle ich nur ein paar Felder aus, sieht es so aus:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Debitoren].[DebitorName].[DebitorName]").VisibleItemsList = Array( _
"[Debitoren].[DebitorName].&[Abdo Aecha]", _
"[Debitoren].[DebitorName].&[Abdulla Önen]", _
"[Debitoren].[DebitorName].&[Abdulsalam Bary]", _
"[Debitoren].[DebitorName].&[Abdullah Erdogan]", _
"[Debitoren].[DebitorName].&[Abdel Aziz Attalbaoui]")

Gibt es hierfür auch nen Lösungansatz?

Mc Santa
02.07.2014, 15:44
Hallo,

auch dort kann ich gezielt einzelne Dinge abwählen, statt alle sichtbaren auszuwählen. Das sieht dann etwa so aus:
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Geschoss")
.PivotItems("2").Visible = False
End With

Bitte lade eine Beispieldatei hoch, an der man den Fehler nachvollziehen kann.

VG

Steffen_Krause
08.07.2014, 14:51
Hallo,

Datei hochladen geht leider nicht so einfach.. Wegen Kundendaten usw...

Habe das nun folgendermaßen mal ausprobiert:
With ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Debitoren].[DebitorName].[DebitorName]").PivotItems( _
"[Debitoren].[DebitorName].&[Abdullah Erdogan]").Visible = False
End With
End Sub


Leider bringt er mir hier immer wieder die Fehlermeldung Laufzeitfehler "1004":
Die PivotItems-Eigenschaft des PivotField-Objektes kann nicht zugeordnet werden.

Wenn Ihr noch einen Lösungansatz hättet wäre das toll.
Sollte es noch fragen zu der Datei bzw. deren Aufbau geben helfe ich gerne so gut es geht weiter...

Mc Santa
08.07.2014, 14:59
Hallo,

Du brauchst die Datei ja nicht mit den Originaldatei hochladen, aber die Datei würde sehr helfen. Ersetze Namen durch Fantasienamen usw. Achte jedoch darauf, den Datentype nicht zu ändern: Text bleibt Text, Zahlen bleiben Zahlen.

VG

Steffen_Krause
15.07.2014, 12:24
Auch das ist leider so nicht möglich, da die Daten per Analysis Services aus einer SQL-Datenbank bzw. einem Datawarehouse kommen.

Gibt´s da ne Alternative?