Leerzeichen im String effizient tilgen
#1
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.
Antworten Top
#2
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)
[-] Folgende(r) 1 Nutzer sagt Danke an lupo1 für diesen Beitrag:
  • Elke Boese
Antworten Top
#3
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Elke Boese
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Elke Boese
Antworten Top
#5
Toller Lerneffekt. Den Unterschied zwischen Trim und Application.Trim kannte ich nicht.
Danke.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste