PDA

Vollständige Version anzeigen : Mehrere aufeinander folgende Leerzeichen durch ein einziges ersetzen


FrankAs
22.08.2017, 09:39
Ich möchte per Makro (oder Funktion) in einer kompletten Tabelle die Zellen in einer einzigen Spalte wie folgt bearbeiten:

Bis zum letzten Zeichen der jeweiligen Zellen sollen ggf. mehrere aufeinander folgende Leerzeichen durch ein einziges ersetzt werden.

Beispiel:

vorher : "Ein_____Männlein_steht____im_____________Walde"
nachher: "Ein_Männlein_steht_im_Walde"

Wie mache ich das am geschicktesten?

Anmerkung: Ich habe das Blank in meinem Beispiel durch einen Unterstrich ersetzt, da die Darstellung hier ansonsten automatisch
auf ein Leerzeichen reduziert wird.

lupo1
22.08.2017, 09:52
VBA: Trim()
Excel: GLÄTTEN()

FrankAs
22.08.2017, 11:02
hab`s mit Trim in meinem Makro versucht, klappt nicht! :confused:

.Cells(Zeile, 6) = Trim(.Cells(Zeile, 5)

In Spalte F steht nach Makro exakt dasselbe wie in Spalte E.

Wenn ich mich nicht irre, entfernt die Funktion Trim nur die führenden und angehängten Leerzeichen!?!
Habe auch Google mal dazu befragt, und ich kann leider nix Gegenteiliges finden.

Leider gibt es die Funktion GLÄTTEN in VBA nicht :depressed

Wie kann ich das anders - mit Code im Makro - lösen?

Fennek11
22.08.2017, 11:06
Hallo,

VBA.Trim() löscht nur am Anfang und Ende Leerzeichen.

Aber es gibt die Möglchkeit auch die "Worksheetfunction." zu nutzen.

Die Übersetzen von "=glätten()" musst du dir suchen.

mfg

EarlFred
22.08.2017, 11:17
Die Übersetzen von "=glätten()" musst du dir suchen.
Trim() ;)

Range("B1").Value = Application.Trim(Range("A1").Value)

Luschi
22.08.2017, 11:20
Hallo FrankAs,

versuch's mal so:Sub test1()
Dim s As String

s = " Ein Männlein steht im Walde"
s = Trim(s)
While InStr(1, s, " ", vbTextCompare) > 0
s = Replace(s, " ", " ", 1, -1, vbTextCompare)
Wend

MsgBox "'" & s & "'"
End Sub
Gruß von Luschi
aus klein-Paris

Wilfried07
22.08.2017, 11:22
Hallo!

Ohne VBA

<b>Tabelle2</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:221px;" /><col style="width:197px;" /><col style="width:80px;" /><col style="width:570px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td > ein &nbsp; M&auml;nnlein &nbsp; &nbsp;steht im &nbsp;Walde</td><td style="background-color:#ffcc99; ">ein M&auml;nnlein steht im Walde</td><td >&nbsp;</td><td >entfernt die Leerzeichen am Anfang und am Ende des Zellinhalts</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td > &nbsp;Huber &nbsp; Sepp &nbsp;</td><td style="background-color:#ffcc99; ">Huber Sepp</td><td >&nbsp;</td><td >w&uuml;rde aber doppelt vorkommende Leerzeichen mitten im Text auch auf ein Leerzeichen &auml;ndern</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >B2</td><td >=GL&Auml;TTEN(A2)</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>


Gruß
Wilfried

Drogist
22.08.2017, 11:35
Moin,
geht auch recht gut mit Power Query ...

FrankAs
22.08.2017, 11:39
Hallo an alle, die`s interessiert:

Hier die Lösung / Code für Makro:

Sub LeerRaus()
With ActiveSheet
.UsedRange.Cells.Value = Application.Trim(.UsedRange.Cells.Value)
End With
End Sub


Mit dem "Application"-Command kann man Excel-Funktionen in VBA aufrufen :idee:

Gruß
Frank

Fennek11
22.08.2017, 11:40
Hallo,

mit der Übersetzungshilfe:

die Funktion VBA.Trim()

wirkt anders als

Worksheetfunction.trim()

mfg