Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ganze Wörter in string suchen und löschen

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
Anzeige

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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ganze Wörter in String suchen und löschen in Excel


Schritt-für-Schritt-Anleitung

Um in einem String bestimmte Wörter zu löschen, kannst Du den folgenden VBA-Code verwenden. Dieser Code sucht nach ganzen Wörtern in einem vorgegebenen Bereich und entfernt sie aus dem String.

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub GanzeWörterLöschen()
       Dim satz As String
       Dim suchtext As String
       Dim i As Integer
    
       satz = "Ich habe Hunger"
       ' Hier wird der String festgelegt. Du kannst ihn anpassen.
    
       For i = 1 To 200
           suchtext = Cells(i, 1).Value
           If Len(Trim(suchtext)) > 0 Then
               satz = Replace(satz, " " & suchtext & " ", " ")
           End If
       Next i
    
       MsgBox satz
    End Sub
  4. Führe den Code aus: Drücke F5 oder klicke auf „Ausführen“.

  5. Resultat: Der bereinigte String wird in einem Meldungsfeld angezeigt.


Häufige Fehler und Lösungen

  • Problem: Der Code entfernt auch Teile von Wörtern (z.B. „habe“ aus „haben“).

    • Lösung: Stelle sicher, dass Du Leerzeichen vor und nach dem Suchtext hinzufügst: satz = Replace(satz, " " & suchtext & " ", " ").
  • Problem: Groß- und Kleinschreibung werden nicht korrekt behandelt.

    • Lösung: Verwende LCase, um sicherzustellen, dass die Vergleiche nicht von der Groß- oder Kleinschreibung beeinflusst werden.

Alternative Methoden

Eine Alternative besteht darin, die Excel-Funktion FILTER in Excel 365 zu verwenden. Diese Funktion ermöglicht es Dir, Daten basierend auf bestimmten Kriterien zu filtern und zu löschen. Eine einfache Formel könnte wie folgt aussehen:

=FILTER(A1:A200, ISERROR(SEARCH(A1:A200, B1)))

Hierbei wird die Liste der Wörter in der ersten Spalte nach Wörtern gefiltert, die nicht im String in Zelle B1 vorkommen.


Praktische Beispiele

Ein Beispiel, um „bestimmte Wörter zu löschen“, könnte so aussehen:

  1. Du hast eine Liste in Spalte A (A1:A200) mit Wörtern, die Du entfernen möchtest.
  2. In Zelle B1 steht der Text: „Ich habe Hunger und möchte mehr wissen.“
  3. Nach dem Ausführen des Codes wird der Text in B1 auf „Ich Hunger und möchte mehr wissen.“ reduziert, wobei „habe“ entfernt wurde.

Tipps für Profis

  • Verwende Trim, um unerwünschte Leerzeichen zu entfernen.
  • Überlege, wie Du Sonderzeichen und Satzzeichen handhaben möchtest, um eine saubere Ausgabe zu gewährleisten.
  • Teste Deinen Code mit verschiedenen Strings, um sicherzustellen, dass er robust ist und auch mit Wörtern endet, die mit „z“ enden, funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Sätze zu verarbeiten?
Du kannst eine Schleife einfügen, die durch mehrere Zellen iteriert und den Code für jeden Satz anwendet.

2. Funktioniert dieser Code in älteren Excel-Versionen?
Ja, der VBA-Code ist in den meisten Excel-Versionen kompatibel, solange Makros aktiviert sind.

3. Kann ich den Code so anpassen, dass er auch Wörter mit Sonderzeichen entfernt?
Ja, Du musst die Logik erweitern, um Sonderzeichen zu entfernen, bevor Du den Replace-Befehl verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige