Clever-Excel-Forum

Normale Version: Leerzeichen im String effizient tilgen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

schaut euch bitte folgenden beispielhaften Code an:

Sub Leerzeichen_löschen()
Dim strZ$
strZ = "               Eins zwei drei                   vier fünf                "
strZ = Trim(strZ)

strZ = Replace(strZ, Mid(strZ, InStr(strZ, "  "), InStrRev(strZ, "  ") - InStr(strZ, "  ") + 2), " . ")
End Sub



In meinem Beispielstring gibt es vor dem Wort eins und nach dem Wort fünf eine beliebige Anzahl von Leerzeichen. Die Anzahl der Leerzeichen zwischen den Wörtern drei und vier soll ebenfalls beliebig sein.
Die Aufgabe besteht nun darin die Leerzeichen am Satzanfang und Ende zu entfernen und zwischen den Wörter drei und vier den Punkt so zu setzen, wie ich dies in meinem funktionierenden Codebeispiel
gemacht habe.
Mir scheint meine Formel aber viel zu lang für eine so simple Aufgabe. Kann man das nicht effizienter erledigen?
Vielen Dank für eure Hilfe.
ungetestet:

strZ = Replace(strZ, Mid(strZ, InStr(strZ, "  "), InStrRev(strZ, "  ") - InStr(strZ, "  ") + 2), " . ")

würde (am 3. Leerzeichen, habe ich jetzt verstanden!) zu

strZ = Worksheetfunction.Substitute(strZ, " ", " . ", 3) 'oder
strZ = Application.Substitute(strZ, " ", " . ", 3) '(bitte beide ausprobieren)
Hi,

ob das klappt?:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBU
1              Eins zwei drei                   vier fünf                73                                                                       
2                                                                         
3321603216032160321603216032160321603269105110115321221191011053210011410110516016016016016016016016016016016016016016016016016016032118105101114321022521101021601601601601601603216032160321603216032160

ZelleFormel
B1=LÄNGE(A1)
A3=CODE(TEIL($A$1;SPALTE(A$1);1))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Wenn schon von Formeln die Rede ist, dann mal mit Formeln:

Arbeitsblatt mit dem Namen 'Tabelle1'
 A
1              Eins zwei drei                   vier fünf                
2Eins zwei drei.vier fünf

ZelleFormel
A2=WECHSELN(GLÄTTEN(WECHSELN(A1;ZEICHEN(160);""));" ";".";3)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Hallo,
Sub Leerzeichen_loeschen()
  Dim strZ As String
  strZ = "               Eins zwei drei                   vier fünf                "
  strZ = Application.Substitute(Application.Trim(strZ), " ", " . ", 3)
  MsgBox """" & strZ & """"
End Sub
Gruß Uwe
Toller Lerneffekt. Den Unterschied zwischen Trim und Application.Trim kannte ich nicht.
Danke.