|
Es kann vorkommen, dass sich in einer Excel Tabelle, unerwünschte Leerzeichen befinden. Das passsiert oft, wenn man Daten importiert. Die Frage ist: Wie kann ich diese störenden Leerzeichen aus meiner Excel Tabelle entfernen? Und das natürlich ohne dass ich jede Zelle manuell bearbeiten muss. Ich habe hier einmal verschiedene kleine Makros erstellt, welche euch vielleicht hilfreich sind. In Excel VBA gibt es z.B. den Befehl TRIM. Um diese Makros auszuprobieren erstellt ihr euch eine Tabelle wie diese: | | A | | 1 | Mar cus Ha t Ei nen Ba ll | | 2 | Mar cus Ha t Ei nen Ba ll | | 3 | Mar cus Ha t Ei nen Ba ll | | 4 | Mar cus Ha t Ei nen Ba ll | | 5 | Mar cus Ha t Ei nen Ba ll | | 6 | Mar cus Ha t Ei nen Ba ll | | 7 | Mar cus Ha t Ei nen Ba ll | | 8 | Mar cus Ha t Ei nen Ba ll | | 9 | Mar cus Ha t Ei nen Ba ll | | 10 | Mar cus Ha t Ei nen Ba ll |
Nun müssen wir uns entscheiden wo wir die Leerzeichen entfernen möchten. Mit dem Befehl TRIM können wir die Leerzeichen links und rechts von unserer Eingabe entfernen: Sub Leerzeichen_entfernen() Dim i As Integer For i = 1 To 10 Cells(i, 1) = Trim(Cells(i, 1)) 'Leerzeichen werden links und rechts entfernt Next End Sub
Wollen wir nur die Leerzeichen links von unserer Eingabe löschen, so nutzen wir den Befehl LTRIM: Sub Leerzeichen_entfernen() Dim i As Integer For i = 1 To 10 Cells(i, 1) = LTrim(Cells(i, 1)) 'Leerzeichen werden Links entfernt Next End Sub
Man kann es sich fast denken ... wollen wir die Leerzeichen auf der rechten Seite entfernen, so nutzen wir den Befehl RTRIM: Sub Leerzeichen_entfernen() Dim i As Integer For i = 1 To 10 Cells(i, 1) = RTrim(Cells(i, 1)) 'Leerzeichen werden Rechts entfernt Next End Sub
Was ist nun aber, wenn wir alle Leerzeichen in den Zellen löschen möchten? Hier nutzen wir einen Code, welcher uns alle Leerzeichen ersetzt: Sub Leerzeichen_entfernen() Dim i As Integer For i = 1 To 10 Cells(i, 1).Replace What:=" ", Replacement:="", _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False 'alle Leerzeichen werden entfernt Next End Sub
Nun kann es aber sein, dass wir in unseren Zellen Leerzeichen haben, welche gar keine sind. Es kann sein, dass uns ein Code(160) in die Tabelle eingebaut wurde, welcher wie ein Leerzeichen ausschaut. In diesem Fall nutzen wir den Befehl Substitute, welcher uns aus Excel als Wechseln bekannt ist.
Sub Leerzeichen_entfernen() Dim i As Integer For i = 1 To 10 Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), Chr(160), "") 'Das Leerzeichen ist kein Leerzeichen, sondern ein Code(160) 'Das merkt man auf den ersten Blick aber nicht. Hier wird 'der Code(160) gegen nichts ausgewechselt Next End Sub
Ein Makro möchte ich euch hier abschließend noch zeigen. Schaut euch dazu noch einmal mein Beispiel an. Fällt euch auf, dass hier Leerzeichen mitten in den Wörtern sind? Mit dem letzten Makro möchte ich folgendes machen: Es sollen alle Leerzeichen innerhalb dieser Wörter gelöscht werden, aber ... ... folgt ein großgeschriebenes Wort, dann soll das Leerzeichen erhalten bleiben! Sub Leerzeichen_entfernen() Dim i As Integer Dim Zeichen As Integer For i = 1 To 10 For Zeichen = 1 To Len(Cells(i, 1)) If Mid(Cells(i, 1), Zeichen, 1) = " " Then If LCase(Mid(Cells(i, 1), Zeichen + 1, 1)) = Mid(Cells(i, 1), Zeichen + 1, 1) Then Cells(i, 1) = Left(Cells(i, 1), Zeichen - 1) + Mid(Cells(i, 1), Zeichen + 1) End If End If Next Next End Sub
Probiert es aus - es funktioniert wirklich.
|