Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
ganze Wörter in string suchen und löschen
Beffen
Tacho an Alle!
Ich habe eine kleine Frage:
Ich möchte aus einem String (Variable "satz") Wörter herausfiltern, die in der ersten Spalte von Zeile 1 bis 200 stehen. Darin sind besonders häufig verwendete Wörter der deutschen Sprache aufgeführt.
Ziel ist es am Ende ein Schlagwort aus dem String "satz" herauszubekommen.
Mein bisheriger Code funktioniert nicht ganz. Ich sage unten auch warum - aber wahrscheinlich wisst ihr das eh schon :-)
Private Sub CommandButton1_Click()
z = 1
Dim satz As String
satz = tb_text
Set blatt = ThisWorkbook.Sheets(1)
For i = 1 To 200
suchtext = Cells(i, 1)
If InStr(satz, suchtext) > 0 Then
z = z + 1
satz = Replace(satz, suchtext, "")
End If
Next
lbl_schlagwort.Caption = satz
End Sub

Wenn ich als "satz" den String "Ich habe Hunger" eingebe, erscheint als Schlagwort "Ich Hung".
In der Liste mit den meist verwendeten Wörtern ist natürlich auch "er" enthalten!
Ich bräuchte folglich eine Lösung, die nur nach ganzen Wörtern im String "satz" sucht und nicht Bestandteile davon heraussucht! Ausserdem wir scheinbar zwischen groß und Kleinschreibung unterschieden ("ich" ist natürlich in der Liste - aber nicht "Ich")
Ausserdem müssen Sonderzeichen und Kommas gelöscht werden, wenn beim Beispiel "Ich habe Hunger" das Wort "habe" gelöscht wird. Andernfalls stehen am ende sehr viele Leerzeichen sinnlos in der Kante....
Habt ihr einen Vorschlag für das Hauptproblem mit dem Ersetzen ganzer Wörter?
Gruß Beffen

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ganze Wörter in string suchen und löschen
19.04.2012 10:58:12
Rudi
Hallo,
füge vor und hinter Suchtext ein Leerzeichen ein und ersetze durch ein Leerzeichen.
satz = Replace(satz, " " & suchtext &" ", " ")
Was soll z?
Außerdem musst du nicht prüfen, ob es vorkommt.
Gruß
Rudi
das ist es nicht so ganz
19.04.2012 11:56:24
Sheldon
Hallo Beffen, hallo Rudi,
ganz so einfach ist das imho nicht! Um alle Wörter zu finden müssen erstmal alle Sonderzeichen raus und Leerzeichen kommen ja normalerweise nicht am Satzanfang und -ende vor. Ich habe hier mal einen Code gebastelt, der allerdings die Variable Satz aus Zelle B1 nimmt und das Ergebnis in Zelle B2 schreibt. Kannst du ja dann entsprechend anpassen, Beffen. Das LCase ist eigentlich gar nicht mehr notwendig, da ich die Countif-Funktion für den Wortvergleich verwende. Und der ist Groß- und Kleinschreibung ja bekanntermaßen egal.
Sub Satz_trennen()
Dim Satz As String, Words() As String, i As Integer
Satz = LCase(Cells(1, 2).Value)
ReDim Words(0) As String
For i = 0 To 31
Satz = Replace(Satz, Chr(i), "")
Next i
For i = 33 To 96
Satz = Replace(Satz, Chr(i), "")
Next i
For i = 123 To 191
Satz = Replace(Satz, Chr(i), "")
Next i
For i = 1 To Len(Satz)
Select Case Mid(Satz, i, 1)
Case Is  " "
Words(UBound(Words)) = Words(UBound(Words)) & Mid(Satz, i, 1)
Case " "
ReDim Preserve Words(UBound(Words) + 1) As String
End Select
Next i
For i = 0 To UBound(Words)
If WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(200, 1)), Words(i)) = 0 Then
Cells(2, 2).Value = Cells(2, 2).Value & Words(i)
If i 
Gruß
Sheldon
Anzeige
AW: ganze Wörter in string suchen und löschen
23.04.2012 15:11:31
Beffen
super, vielen Dank für eure Rückmeldungen!
Neuer Gedankenschub!
Gruß Beffen

54 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige