Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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

Nur ganzes Wort in String suchen

Nur ganzes Wort in String suchen
18.01.2020 10:43:30
Dirk
Hallo,
ich möchte den Namen des Berliner Bezirks "Mitte" in einer großen Textmenge finden, die sich in einer Excel-Tabellenspalte befindet. Dazu habe ich eine Funktion geschrieben, die mit der InStr-Funktion das gut erledigt. Aber es werden natürlich auch Wörter wie "mittendrin", "miteinander" etc. gefunden, die natürlich nicht gemeint sind.
Kennt jemand eine einfache Möglichkeit, um nur ganze Wörter zu finden? Also wenn der Such-String vorne und hinten durch ein Satzzeichen wie Leerzeichen, Komma, Punkt, Semikolon etc. oder durch den Anfang oder das Ende des Strings begrenzt ist?
Vielen Dank für eure Gedanken!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur ganzes Wort in String suchen
18.01.2020 10:52:54
Nepumuk
Hallo Dirk,
so:
Public Sub Test()
    Dim objRegEx As Object, objMatch As Object
    Dim strText As String
    strText = "mittendrin, Berliner Bezirks Mitte in einer mitteinander"
    Set objRegEx = CreateObject("VBScript.RegExp")
    With objRegEx
        .Global = True
        .Pattern = "\bmitte\b"
        .IgnoreCase = True
        Set objMatch = .Execute(strText)
    End With
    If objMatch.Count = 1 Then
        Call MsgBox(objMatch.Item(0))
    Else
        Call MsgBox("Nix gefunden")
    End If
End Sub

Gruß
Nepumuk
Anzeige
Alles Mitte
18.01.2020 11:59:30
lupo1
=(
LÄNGE(A1)-
LÄNGE(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(" "&A1&" ";"-Mitte ";" Mitte ");" Mitte ";" ");" Mitte,";" ,");" Mitte.";" .");" Mitte;";" ;");" Mitte!";" !");" Mitte?";" ?"))+2)/
LÄNGE("Mitte")
sollte eigentlich 99,9% erledigen, ohne VBA
AW: Alles Mitte
19.01.2020 22:11:38
Dirk
Hallo Nepumuk,
ja, RegEx ist die Lösung, die ich brauchte, vielen Dank!!! Meine komplette Funktion sieht nun so aus:
Public Function Mitte(txt As String) As String
Dim result As String
' den Ortsteil "Mitte" gesondert behandeln, da das Wort in vielen anderen vorkommt
' Über Regular Expressions nur nach ganzen Wörtern suchen:
Dim objRegEx As Object, objMatch As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "\bmitte\b"
.IgnoreCase = True
Set objMatch = .Execute(txt)
End With
If objMatch.Count = 1 Then
result = result & " Mitte"
End If
' die übrigen Ortsteilnamen dürfen auch in anderen Wörtern vorkommen (z. B. "Weddinger ...") _
If InStr(1, LCase(txt), "wedding") Then result = result & " Wedding"
If InStr(1, LCase(txt), "gesundbrunnen") Then result = result & " Gesundbrunnen"
If InStr(1, LCase(txt), "moabit") Then result = result & " Moabit"
If InStr(1, LCase(txt), "tiergarten") Then result = result & " Tiergarten"
Mitte = LTrim(result)
End Function

Anzeige
AW: Alles Mitte
19.01.2020 22:16:28
Dirk
Hallo Lupo1,
da ich nicht nur nach Mitte, sondern auch noch nach zig anderen suchen muss, ist VBA doch eleganter und bei meiner Riesenliste mit 60.000 Zeilen weniger ressourcenfressend.
Ganz herzlichen Dank auch für Deine Hilfe!
AW: Nur ganzes Wort in String suchen
19.01.2020 22:33:48
Dirk
Hallo Nepumuk,
ja, RegEx ist die Lösung, die ich brauchte, vielen Dank!!! Meine komplette Funktion sieht nun so aus:
Public Function Mitte(txt As String) As String
Dim result As String
' den Ortsteil "Mitte" gesondert behandeln, da das Wort in vielen anderen vorkommt
' Über Regular Expressions nur nach ganzen Wörtern suchen:
Dim objRegEx As Object, objMatch As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "\bmitte\b"
.IgnoreCase = True
Set objMatch = .Execute(txt)
End With
If objMatch.Count = 1 Then
result = result & " Mitte"
End If
' die übrigen Ortsteilnamen dürfen auch in anderen Wörtern vorkommen (z. B. "Weddinger ...") _
_
If InStr(1, LCase(txt), "wedding") Then result = result & " Wedding"
If InStr(1, LCase(txt), "gesundbrunnen") Then result = result & " Gesundbrunnen"
If InStr(1, LCase(txt), "moabit") Then result = result & " Moabit"
If InStr(1, LCase(txt), "tiergarten") Then result = result & " Tiergarten"
Mitte = LTrim(result)
End Function

Anzeige
AW: Nur ganzes Wort in String suchen
18.01.2020 11:36:05
Daniel
Hi
Wenn du mit Instr suchst, kannst du folgendes tun:
Erweitere den Suchbegriff um das Worttrennzeichen " " und suche nach " Mitte ".
Ggf muss man vorher noch im durchsuchten Text die Satzzeichen, welche ja auch direkt nach dem Wort folgen können, durch Leerzeichen ersetzen.
Wenn das gesuchte Wort auch am Anfang oder Ende stehen kann, muss man dort auch noch Leerzeichen anfügen, bevor man die Suche durchführt.
Zusätzlich kann man auch Instr so einstellen, dass die Groß/Kleinschreibung berücksichtigt wird.
Gruß Daniel
AW: Nur ganzes Wort in String suchen
19.01.2020 22:30:47
Dirk
Hallo Daniel,
danke für den Tipp, verwende ich an anderer Stelle auch schon. geht hier aber nicht, weil der Begriff nicht gefunden werden würde, wenn er am Anfang des Strings steht. Die RegEx-Lösung von Nepumuk war aber zielführend.
Vielen Dank für Deine Mithilfe!
Anzeige
Aua das tut weh
20.01.2020 08:07:11
Daniel
Lesen ist nicht so dein ding, oder?
Lies dir meinen Beitrag bitte nochmal vollständig durch und überdenke deine Antwort.
Gruß Daniel
AW: Aua das tut weh
20.01.2020 22:38:04
Dirk
Stimmt, habe ich übersehen, wäre auch gegangen, sorry.

37 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige