Microsoft Excel

Herbers Excel/VBA-Archiv

Makro für variablen Spezialfilter | Herbers Excel-Forum


Betrifft: Makro für variablen Spezialfilter von: Susi
Geschrieben am: 22.10.2008 09:59:20

Hallo liebe Excelfreunde,

ich habe eine Excel-Mappe gebastelt, in der die Anwender über ein Kombinationsfeld ihren Wert aussuchen können. Der Wert dieses Kombofeldes wird in eine neues Tabellenblatt (Ergebnis) Zelle D2 übertragen.

Ich habe bereits einen Spezialfilter über ein Makro eingebaut, welches auch so funktioniert, wie ich das gerne wollte. In dem wird auch der Wert eines Kombofeldes als Filterkriterium ausgewählt.
Das Makor lautet bis jetzt:
Select Case Worksheets("Ergebnis").Range("B2")
Case "aktiv"
Worksheets("Ergebnis").Select
Sheets("Grundtabelle").Range("A12:L2656").AdvancedFilter Action:= _
xlFilterCopy, CriteriaRange:=Sheets("Ergebnis").Range("B1:B2"), CopyToRange:=Sheets("Ergebnis").Range("A5:D5000") _
, Unique:=True
End Select

Nun soll zusätzlich über die schon erscheinende Ergebnisfilterungstabelle eine erneute Filterung nach dem über das Kombinationsfeld ausgewählten Wert angewendet werden.

Beispiel:

Ergebnis des ersten Spezialfilters im TB "Ergebnis" wäre - Spalten A, B, C, D

Zeile
5 Auftrag - BEZ - Team - Status
6 8A - Test1 - AB31 - aktiv
7 8B - Test2 - B31 - aktiv
8 7C - Test3 - A32 - aktiv
9 7D - Test4 - BB32 - aktiv

Nun soll also über diese schon vorgefilterten Daten noch zusätzlich nach dem Team (Wert des Kombinationsfeldes in D2) gefiltert werden. Da aber mehr als 100 Teams auftauchen können, wollte ich hier nicht auch alle Einzeln über Select Case ansprechen, zumal ich hier das Problem habe, dass ich nicht nach dem genauen Wert der Spalte C suche, sondern nur nach einem Teil - so nach dem Motto wenn Zelle D2 den Wert 31 enthält, sollten als Ergebnis imnur noch die Zeilen auftauchen, in denen die Spalte C den Wert 31 enthält. Hier also die Zeilen 6 und 7.

Ich hoffe ich konnte mich verständlich ausdrücken.

Vielen Dank schon mal im voraus für Eure Antworten.

Grüße Susi

  

Betrifft: AW: Makro für variablen Spezialfilter von: Ramses
Geschrieben am: 22.10.2008 11:49:15

Hallo

schau dir dazu mal den Aufbau des Spezialfilters in der Online Hilfe an, oder mit Beispielen hier

http://www.online-excel.de/excel/singsel.php?f=5

Gruss Rainer


  

Betrifft: Spezialfilter enthält Makro von: Beate Schmitz
Geschrieben am: 22.10.2008 11:50:26

Hallo Susi,

wenn man Spezialfilter nach enthält z.B. 31 filtern will, muss D2 als Text formatiert sein und dann in der Zelle stehen: *31*

Wenn so deine Ausgangsliste aussieht (die 31 in D2 wäre schon vom Kombinationsfeld übertragen):

Ergebnis

 ABCD
1    Team
2   31
3    
4    
5Auftrag BEZ Team Status
68ATest1AB31aktiv
78BTest2B31aktiv
87CTest3A32aktiv
97DTest4BB32aktiv


Dann funktioniert dieser Code:

Sub D2_filtern()
    Dim contents As String
    contents = Range("D2").Value
    Range("D2").NumberFormat = "@" 'D2 wird als Text formatiert
    Range("D2").FormulaR1C1 = "*" & contents & "*" 'die Asterixe werden vor- und nachgestellt
    Columns("F:I").Delete 'eventuelle bisherige Filterergebnisse werden gelöscht
    Range("A5:D9").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "D1:D2"), CopyToRange:=Range("F5"), Unique:=False 'Spezialfilter
    Range("D2").ClearContents 'Kriterienzelle wird geleer
End Sub



Gruß
Beate


  

Betrifft: AW: Spezialfilter enthält Makro von: Susi
Geschrieben am: 22.10.2008 15:29:01

Hallo Beate,

du hast mein Anliegen im Prinzip schon richtig verstanden. Danke für die Antwort.

Mein kleines Problem ist jetzt nur noch, dass ich die Ergebnisse wieder in einer anderen Tabelle ausgeben muss. In deinem Beispiel ab Zelle F5.
Ich hatte gehofft, dass es die Möglichkeit gibt, die Ergebnisse wieder in der selben Tabelle auszugeben. Im Beispiel also wieder im Bereich (A5:D9) nur eben ohne die beiden Zeilen mit Team *32*.
Wenn ich versuche dein Makro mit meinen laienhaften VBA-Kenntnissen anzupassen, und die Ausgabe der Ergebnisse in "CopyToRange:=Range("A5:D9") ausgeben lassen will, erhalte ich leider eine komplett leere Tabelle.
Vielleicht kennst du ja noch einen kleinen Trick.

Grüße Susi


  

Betrifft: AW: Spezialfilter enthält Makro von: Beate Schmitz
Geschrieben am: 22.10.2008 16:14:43

Hallo Susi,

Sub D2_filtern2()
    Dim contents As String
    contents = Range("D2").Value
    Application.ScreenUpdating = False
    Range("D2").NumberFormat = "@" 'D2 wird als Text formatiert
    Range("D2").FormulaR1C1 = "*" & contents & "*" 'die Asterixe werden vor- und nachgestellt
    Columns("F:I").Delete 'eventuelle bisherige Filterergebnisse werden gelöscht
    Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "D1:D2"), CopyToRange:=Range("F5"), Unique:=False 'Spezialfilter
    Range("A5").CurrentRegion.Clear
    Range("F5").CurrentRegion.Copy Range("A5")
    Columns("F:I").Delete 'bisherige Filterergebnisse werden gelöscht
    Range("D2").ClearContents 'Kriterienzelle wird geleert
    Application.ScreenUpdating = True
End Sub



Gruß,
Beate


  

Betrifft: AW: Spezialfilter enthält Makro von: Susi
Geschrieben am: 28.10.2008 09:32:07

Danke Beate,

hat funktioniert.

Gruß Susi


Beiträge aus den Excel-Beispielen zum Thema "Makro für variablen Spezialfilter "