Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textfilter Zahlenfilter ohne VBA?

Textfilter Zahlenfilter ohne VBA?
lupo
Guten Morgen,
ich weiss nicht so richtig wonach ich googeln soll, deswegen folgende Frage, die es bestimmt schon ein paar Mal gegeben hat:
Gibt es eine Excel-Funktion mit der sich der Inhalt einer anderen Zelle so verändern lässt, dass alles entfernt wird, was kein Buchstabe oder keine Zahl ist?
Am liebsten ohne VBA. Aber natürlich, falls es keine Möglichkeit ohne VBA gibt, lieber mit VBA als das Problem gar nicht lösen.
Danke an Euch,
Lupo

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textfilter Zahlenfilter ohne VBA?
28.07.2009 09:27:38
lupo
Meine weitere Recherche ein paar Erkenntnisse gebracht:
  • was ich suche wird regexp / "regular expressions" genannt

  • möglicherweise bringt "VBScript Regular Expressions 5.5" die gewünschten funktionen mit sich

  • Ohne VBA kommen die Funktionen WECHSELN und FINDEN am nähesten an das Problem heran.
    Über Korrekturen und Ergänzungen würde ich mich sehr freuen. Danke!
    AW: Textfilter Zahlenfilter ohne VBA?
    28.07.2009 09:29:14
    lupo
    Vergessen, die Frage als "noch offen" zu markieren. Hiermit nachgeholt.
    AW: Textfilter Zahlenfilter ohne VBA?
    28.07.2009 13:39:24
    Klaus
    Hallo Lupo,
    ich hätte da eine umständliche Lösung mit Hilfsspalten anzubieten:
    https://www.herber.de/bbs/user/63479.xls
    Ich lass mal offen, vielleicht schaut noch einer der Cracks hier rein und schrumpft das zu einer einzelnen Matrixformel :-)
    Grüße,
    Klaus M.vdT.
    Anzeige
    mit VBA
    28.07.2009 09:31:43
    Tino
    Hallo,
    ich kann dir nur was mit VBA anbieten.
    Dieser Code kommt in ein Modul.
    Function Clean_Special(rZelle As Range, Nur_Zahlen As Boolean, Nur_Text As Boolean)
    Dim objReg As Object, objMatch As Object
    Dim strPattern As String, strAusgabe
    Dim A As Long
    
    Set objReg = CreateObject("Vbscript.Regexp")
    
    If Nur_Zahlen And Nur_Text Then
     strPattern = "\w"
    ElseIf Nur_Zahlen And Not Nur_Text Then
     strPattern = "\d"
    ElseIf Not Nur_Zahlen And Nur_Text Then
     strPattern = "[a-zA-ZäöüßÄÖÜ]"
    End If
    
    With objReg
        .Pattern = strPattern
        .Global = True
        Set objMatch = .Execute(rZelle.Text)
    End With
    Set objReg = Nothing
    
    For A = 0 To objMatch.Count - 1
     strAusgabe = strAusgabe & objMatch(A)
    Next A
    If IsNumeric(strAusgabe) Then strAusgabe = strAusgabe * 1
    
    Clean_Special = strAusgabe
    
    End Function
    
    In Excel kannst Du dies wie eine Formel verwenden.
     ABC
    1hdgahg 15 °hdgahg15Text und Zahlen
    2hdgahg 15 °hdgahgNur den Text
    3hdgahg 15 °15Nur die Zahlen

    Formeln der Tabelle
    ZelleFormel
    B1=Clean_Special(A1;WAHR;WAHR)
    B2=Clean_Special(A2;FALSCH;WAHR)
    B3=Clean_Special(A3;WAHR;FALSCH)

    Gruß Tino
    Anzeige
    nochmal überarbeitet...
    28.07.2009 09:51:41
    Tino
    Hallo,
    die Funktion habe ich nochmals überarbeitet, damit die Schleife nicht so oft durchlaufen wird.
    Function Clean_Special(rZelle As Range, Nur_Zahlen As Boolean, Nur_Text As Boolean)
    Dim objReg As Object, objMatch As Object
    Dim strPattern As String, varAusgabe
    Dim A As Long
    
    Set objReg = CreateObject("Vbscript.Regexp")
    
    If Nur_Zahlen And Nur_Text Then
     strPattern = "\w{1,255}"
    ElseIf Nur_Zahlen And Not Nur_Text Then
     strPattern = "\d{1,255}"
    ElseIf Not Nur_Zahlen And Nur_Text Then
     strPattern = "[a-zA-ZäöüßÄÖÜ]{1,255}"
    End If
    
    With objReg
        .Pattern = strPattern
        .Global = True
        Set objMatch = .Execute(rZelle.Text)
    End With
    Set objReg = Nothing
    
    For A = 0 To objMatch.Count - 1
     varAusgabe = varAusgabe & objMatch(A)
    Next A
    If IsNumeric(varAusgabe) Then varAusgabe = varAusgabe * 1
    
    Clean_Special = varAusgabe
    
    End Function
    

    Gruß Tino
    Anzeige
    AW: nochmal überarbeitet...
    28.07.2009 14:25:11
    lupo
    Hallo Tino.
    Es funktioniert super. Vielen vielen Dank!!!
    Viele Grüße,
    Lupo

    301 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige