Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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