AutoFilter: Teilstring bei "Nummern"?
#1
Hallo zusammen,

ich habe eine Tabelle mit einem Autofilter, den ich auch duch Eingabe eines Suchbegriffs in einer Zelle über VBA bedienen möchte. In Spalte A habe ich Begriffe (formatiert als "Standard"), in Spalte B habe ich Nummern, die ebenfalls als Standard formatiert sind.

In der jeweils ersten Zeile soll der Suchbegriff eingegeben werden, nach dem das Macro dann filtert. Dabei soll nicht nur nach dem exakten Begriff, sondern auf sein Vorkommen irgendwo in der Zelle geprüft werden.

Für Spalte A funktioniert das auch wie gewünscht (z.B. Filtern nach "ff 0" - bitte nicht hinterfragen, ist nur ein Beispiel).

In Spalte B funktioniert das nicht. Setze ich den Suchbegriff zwischen zwei "*" am Anfang und Ende, dann wird gar nichts gefiltert. Suche ich nur nach dem Suchbegriff (ohne "*"), dann filtert das Macro genau diese Nummer, aber eben nicht das Vorkommen in anderen Zeilen: so möchte ich bei Eingabe von "5900" alle Zeilen angezeigt bekommen, wo "5900" oder "805900" oder "905900" vorkommen. Ebenso soll bei "612" angezeigt werden "6120", "6122","806120", "906120", "806122" und "906122".

Die Umwandlung der Formatierung der Spalte B in "Text" hat nicht geholfen.

Gibt es eine Möglichkeit, Spalte B nach meinen Vorstellungen über ein Macro zu filtern?

Hier mein Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Spalte As Integer
    Dim SuchBegriff As String

    Application.EnableEvents = False
    Spalte = Target.Column
   
    With Me.ListObjects(1)
   
        If .AutoFilter Is Nothing Then .Range.AutoFilter

        ' ### Begriff filtern (A1) ###
        If Target.Address = "$A$1" Then
            SuchBegriff = Target.Value
            If SuchBegriff = "" Then
                .Range.AutoFilter Field:=Spalte
            Else
                SuchBegriff = "*" & SuchBegriff & "*"
                .Range.AutoFilter Field:=Spalte, Criteria1:=SuchBegriff
            End If
            ActiveWindow.ScrollRow = 1
            Application.EnableEvents = True
            Exit Sub
        End If


        ' ### Konto-Nr. filtern (B1) ###
        If Target.Address = "$B$1" Then
            SuchBegriff = Target.Value
            If SuchBegriff = "" Then
                .Range.AutoFilter Field:=Spalte
            Else
                ' SuchBegriff = "*" & SuchBegriff & "*"
                .Range.AutoFilter Field:=Spalte, Criteria1:=SuchBegriff
            End If
            ActiveWindow.ScrollRow = 1
            Application.EnableEvents = True
            Exit Sub
        End If

    End With

End Sub

Danke schon mal für's Lesen.


Angehängte Dateien
.xlsm   AutoFilter Zahlen.xlsm (Größe: 22,97 KB / Downloads: 4)
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#2
Hei,

der Unterschied liegt darin, dass du in Spalte A Texte und in Spalte B Zahlen hast. Zahlen kannst du nicht nach den Regeln von Texten filtern. Du müsstest also die Inhalte der Spalte B in Text umwandeln, dann könnte das gehen.
Hoffe geholfen zu haben
Hubert
[-] Folgende(r) 1 Nutzer sagt Danke an HubertK für diesen Beitrag:
  • LuckyJoe
Antworten Top
#3
Danke Hubert, aber wie ich schon geschrieben hatte: Die Umwandlung der Formatierung von Spalte B von "Standard" zu "Text" hat leider nichts verändert.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#4
Hei,

das liegt daran, dass Excel zu viel mitdenkt. Setze mal ein Hochkomma vor die Zahlen, dann geht es.
Hoffe geholfen zu haben
Hubert
[-] Folgende(r) 1 Nutzer sagt Danke an HubertK für diesen Beitrag:
  • LuckyJoe
Antworten Top
#5
Hi,

Du hast die Spalte zwar als Text formatiert, aber nicht die Zahlen als Text eingegeben.
Folgendes funktioniert auch ohne Hochkomma:

in einer freien Spalte diese Formel:

Code:
=Text(B3;"@")

Wenn Du sie in die Nachbarspalte packst, füllt Excel sie automatisch aus, ansonsten bis zum Ende ziehen.
Dann die ganze Reihe markieren, kopieren, B3 markieren, Inhalte einfügen --> Werte
Danach die Hilfsspalte löschen.
Dann stehen Deine Zahlen ohne ' in den Zellen und sind trotzdem Texte.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • LuckyJoe
Antworten Top
#6
Hallo Hubert,
Hallo Edgar,

vielen Dank für eure Unterstützung. Beides funktioniert tadellos; der Vorschlag von Edgar kommt mir etwas mehr entgegen.  28
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top


Gehe zu:


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