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

Forumthread: Mehrere aufeinander folgende Leerzeichen ersetzen

Mehrere aufeinander folgende Leerzeichen ersetzen
01.09.2007 14:34:00
Sabine
Hallo zusammen,
ich google seit 1,5 Tagen im XL-Forum nach einer Lösung, um in einem String mehrere aufeinander folgende Leerzeichen durch ein einziges Semikolon zu ersetzen.
Ich bin bisher leider nicht fündig geworden.
Könnt Ihr mir helfen?
LG
Sabine

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 15:21:39
Rudi
Hallo,
=LINKS(A1;FINDEN(" ";A1)-1)&";"&GLÄTTEN(RECHTS(A1;FINDEN(" ";A1)))
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 15:27:11
Sabine
Hallo,
das funktioniert leider nicht.
versuch mal folgenden Text: "dgf dfddf dd dgdgdfdf dfg ddfd dfdg df dg gd gd dg dg"
Kann gerne auch ne Lösung in VBA sein (ist mir sogar fast lieber).
LG
Sabine

Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 15:30:00
Rudi
Hallo,
ich sehe in deinem Beispiel keine aufeinanderfolgenden Leerzeichen. Die sind alle einzeln.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 16:06:00
Rudi
Hallo,

Function MehrfacheLeerZeichenErsetzen(derString As String)
Dim strTmp As String, i As Integer, strMid As String
For i = 1 To Len(derString)
strMid = Mid(derString, i, 1)
If strMid  " " Then
strTmp = strTmp & strMid
ElseIf strMid = " " And Mid(derString, i + 1, 1)  " " Then
If Right(strTmp, 1)  ";" Then strTmp = strTmp & strMid
ElseIf Right(strTmp, 1)  ";" Then strTmp = strTmp & ";"
End If
Next
MehrfacheLeerZeichenErsetzen = strTmp
End Function


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 16:11:00
fcs
Hallo Sabine,
diese Ersetzung kann man mit 3 aufeinanderfolgenden Ersetzungen durchführen.
In neueren Excelversionen ( ab 2000) kannst statt der Worksheetsfunction "Substitute" auch dei VAB-FUnktion "Replace" verwenden.
Die entsprechende deutschsprachige Tabellenfunktion ist WECHSELN. Beispiel:

A
1  Abc 123  DEF     123 GhI  4567  Qrste
2         Abc 123;DEF;123 GhI;4567;Qrste
Benutzte Formeln:
A2:  =WECHSELN(WECHSELN(WECHSELN(A1; "  "; ";"); "; "; ";"); ";;"; ";")


Gruß
Franz


Sub MehrfachLeerzeichenDurchEinSemicolon()
Dim strText As String, strErgebnis As String
strText = "Abc 123  DEF     123 GhI  4567  Qrste"
With Application.WorksheetFunction
strErgebnis = .Substitute(strText, "  ", ";")
MsgBox strErgebnis
strErgebnis = .Substitute(strErgebnis, "; ", ";")
MsgBox strErgebnis
strErgebnis = .Substitute(strErgebnis, ";;", ";")
MsgBox strErgebnis
End With
End Sub
oder in etwas unübersichtlicherer Form geschachtelt:
Sub MehrfachLeerzeichenDurchEinSemicolon2()
Dim strText As String, strErgebnis As String
strText = "Abc 123  DEF     123 GhI  4567  Qrste"
With Application.WorksheetFunction
strErgebnis = .Substitute(.Substitute(.Substitute(strText, "  ", ";"), "; ", ";"), ";;", ";" _
)
MsgBox strErgebnis
End With
End Sub


Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 16:02:00
Harry
Hallo,
probier mal folgende Funktion ( in ein Modul einfügen, Aufruf mit "=dblspacekiller(String_oder_Zelle_mit_Text)"

Option Explicit
Function dblspacekiller(strSpace As String)
Dim i As Integer
Dim bolSpace As Boolean
bolSpace = False
strSpace = Trim(strSpace) 'äußere Leerzeichen löschen
If Len(strSpace) > 4 Then
For i = Len(strSpace) - 2 To 2 Step -1
strSpace = Replace(strSpace, String(i, " "), ";")
Next
End If
dblspacekiller = strSpace
End Function


Führende und abschließende Leerzeichen werden einfach entfernt, ohne Erstzung durch ";".
Gruß
Harry

Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
01.09.2007 16:22:55
Harry
Korrektur

Option Explicit
Function dblspacekiller(strSpace As String)
Dim i As Integer
strSpace = Trim(strSpace) 'äußere Leerzeichen löschen
If Len(strSpace) >= 4 Then
For i = Len(strSpace) - 2 To 2 Step -1
strSpace = Replace(strSpace, String(i, " "), ";")
Next
End If
dblspacekiller = strSpace
End Function


Anzeige
AW: Mehrere aufeinander folgende Leerzeichen erset
02.09.2007 23:08:13
Sabine
Hallo an alle,
vielen Dank für die Lösungen. Werde es mir mal anschauen und hoffen, dass es auch mit längeren Texten ohne Probleme klappt.
LG
Sabine
;

Forumthreads zu verwandten Themen

Anzeige
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

Mehrere aufeinander folgende Leerzeichen durch Semikolon ersetzen


Schritt-für-Schritt-Anleitung

Um mehrere aufeinander folgende Leerzeichen in Excel durch ein Semikolon zu ersetzen, kannst Du folgende Methoden verwenden:

  1. VBA-Funktion erstellen:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge ein neues Modul hinzu (Einfügen > Modul).
    • Kopiere den folgenden Code in das Modul:
    Function MehrfacheLeerZeichenErsetzen(derString As String) As String
       Dim strTmp As String, i As Integer, strMid As String
       For i = 1 To Len(derString)
           strMid = Mid(derString, i, 1)
           If strMid <> " " Then
               strTmp = strTmp & strMid
           ElseIf strMid = " " And Mid(derString, i + 1, 1) <> " " Then
               If Right(strTmp, 1) <> ";" Then strTmp = strTmp & ";"
           End If
       Next
       MehrfacheLeerZeichenErsetzen = strTmp
    End Function
  2. Verwendung der Funktion:

    • Gehe zurück zu Deinem Excel-Dokument.
    • Verwende die Funktion in einer Zelle wie folgt: =MehrfacheLeerZeichenErsetzen(A1), wobei A1 die Zelle mit dem Text ist.

Häufige Fehler und Lösungen

  • Fehler: Die Funktion gibt unerwartete Ergebnisse zurück.

    • Lösung: Stelle sicher, dass die Eingabezeichenfolge keine nicht druckbaren Zeichen enthält. Verwende die GLÄTTEN-Funktion, um unnötige Leerzeichen zu entfernen.
  • Fehler: Die Funktion funktioniert nur für einfache Texte.

    • Lösung: Überprüfe, ob Du die Funktion korrekt auf eine Zelle anwendest. Teste mit verschiedenen Strings, um sicherzustellen, dass sie mehrere Leerzeichen erkennt.

Alternative Methoden

  • WECHSELN-Funktion:

    • Du kannst die WECHSELN-Funktion verwenden, um mehrere Ersetzungen in einer Zelle durchzuführen. Beispiel:
    =WECHSELN(WECHSELN(WECHSELN(A1; "  "; ";"); "; "; ";"); ";;"; ";")
  • VBA Subroutine:

    • Eine weitere Möglichkeit ist die Nutzung einer VBA Subroutine, um die Ersetzung durchzuführen:
    Sub MehrfachLeerzeichenDurchEinSemicolon()
      Dim strText As String, strErgebnis As String
      strText = "Abc 123  DEF     123 GhI  4567  Qrste"
      With Application.WorksheetFunction
          strErgebnis = .Substitute(strText, "  ", ";")
          MsgBox strErgebnis
          strErgebnis = .Substitute(strErgebnis, "; ", ";")
          MsgBox strErgebnis
          strErgebnis = .Substitute(strErgebnis, ";;", ";")
          MsgBox strErgebnis
      End With
    End Sub

Praktische Beispiele

  1. Beispiel für die VBA-Funktion:

    • Wenn Du den Text "dgf dfddf dd dgdgdfdf dfg ddfd dfdg df dg gd gd dg dg" in der Zelle A1 hast, kannst Du die Funktion =MehrfacheLeerZeichenErsetzen(A1) verwenden, um die Ausgabe zu erhalten.
  2. Beispiel für die WECHSELN-Funktion:

    • Setze in Zelle A2 folgende Formel ein:
    =WECHSELN(WECHSELN(WECHSELN(A1; "  "; ";"); "; "; ";"); ";;"; ";")
    • Dies wird alle doppelten Leerzeichen durch ein Semikolon ersetzen.

Tipps für Profis

  • Nutze die GLÄTTEN-Funktion, um sicherzustellen, dass nur ein einzelnes Leerzeichen zwischen Wörtern verbleibt, bevor Du andere Ersetzungen vornimmst.
  • Teste die Funktionen in einer neuen Datei, um sicherzustellen, dass sie korrekt arbeiten, bevor Du sie in wichtigen Dokumenten anwendest.
  • Überlege, ob Du die VBA replace mehrere Zeichen-Funktion für komplexere Ersetzungen verwenden kannst, um die Effizienz zu steigern.

FAQ: Häufige Fragen

1. Kann ich die Ersetzung auch ohne VBA durchführen? Ja, die WECHSELN-Funktion kann mehrfach verschachtelt werden, um mehrere Leerzeichen zu ersetzen.

2. Funktioniert diese Methode in allen Excel-Versionen? Die vorgestellten Funktionen und Methoden funktionieren in Excel-Versionen ab 2000. Achte darauf, dass Du die richtigen Funktionen entsprechend Deiner Version 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