378 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo allerseits,

ich suche schon Tage im Netz nach einer Lösung, bis jetzt ohne Erfolg.

Vielleicht kann mir jemand helfen.

Ich habe eine Excelliste (B15-CP1500).

Ich möchte, dass mir mittels Makro nur die Zeilen angezeigt werden, welche in Spalte E

3 verschiedene Textteile enthalten. Spalte E enthält verschieden lange Namen, zum Beispiel "Müller", "Meier", "Kippenberg".... Jetzt möchte ich, dass mir nur die Zeilen angezeigt werden, die "üll" ODER "eie" ODER "enber" enthalten. Die Autofilter-Funktion läßt nur 2 Kriterien mit Platzhaltern zu.

Kann mir bitte jemand helfen?

Danke

Frank

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Frank,

der folgende Code gehört in ein Modul deiner Arbeitsmappe:

Sub filtern()

Dim lngZeile As Long
Dim lngLetzte As Long
Dim arrSuch As Variant
Dim i As Long

'Inhalte, nach denen gefiltert werden soll
arrSuch = Array("üll", "eie", "enber")

'letzte Zeile in Spalte E ermitteln
lngLetzte = Cells(Rows.Count, 5).End(xlUp).Row

'nun alle Zeilen in Spalte E ab Zeile 2 durchlaufen (Zeile 1 enthält Überschrift - ggf. anpassen)
For lngZeile = 2 To lngLetzte
  'Array mit Suchbegriffen durchlaufen
  For i = 0 To 2
    If InStr(1, Cells(lngZeile, 5), arrSuch(i)) Then
       Rows(lngZeile).EntireRow.Hidden = True   'Ausblenden
       Exit For                                 'Schleife für Array beenden
     End If
  Next i
Next lngZeile

End Sub

Und zum Einblenden kannst du den folgenden Code verwenden:

Sub alles_einblenden()

ActiveSheet.UsedRange.Rows.Hidden = False

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.,

vielen Dank für deine schnelle Hilfe.

Der Code blendet aber alle Zeilen aus, welche diese Textteile enthalten.

Wenn es geht, sollen aber die Zeilen stehen bleiben, die diese Textteile enthalten.

Geht das?

Gruß

Frank
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Frank,

klassischer Fall von gelesen aber nicht richtig gelesen sad.

Hier der verbesserte Code:

Sub filtern()

Dim lngZeile As Long
Dim lngLetzte As Long
Dim arrSuch As Variant
Dim i As Long
Dim bAus As Boolean

'Inhalte, nach denen gefiltert werden soll
arrSuch = Array("üll", "eie", "enber")

'letzte Zeile in Spalte E ermitteln
lngLetzte = Cells(Rows.Count, 5).End(xlUp).Row

'nun alle Zeilen in Spalte E ab Zeile 2 durchlaufen (Zeile 1 enthält Überschrift - ggf. anpassen)
For lngZeile = 2 To lngLetzte
  'Marker für Ausblenden auf wahr setzen
  bAus = True
  'Array mit Suchbegriffen durchlaufen
  For i = 0 To 2
    If InStr(1, Cells(lngZeile, 5), arrSuch(i)) Then
         bAus = False
         Exit For                                 'Schleife für Array beenden
     End If
  Next i
 
  If bAus = True Then Rows(lngZeile).EntireRow.Hidden = True   'Ausblenden
 
Next lngZeile

End Sub


Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.,

so funktioniert es super!

Vielen Dank für die Hilfe!

Viele Grüße

Frank
...