Sudhakar enthält einige Daten in Spalte A mit nachgestellten Leerzeichen. Wenn er die TRIM-Funktion für die Daten verwendet, werden einige nachfolgende Leerzeichen entfernt, jedoch nicht alle. Er fragt sich, warum einige Leerzeichen übersprungen werden und wie er sie alle entfernen kann.

Es gibt tatsächlich verschiedene Möglichkeiten, wie Sie dieses Problem angehen können.

Die richtige Methode für Ihre Zwecke hängt ausnahmslos von der Art der von Ihnen verwendeten Daten ab.

Wenn Sie TRIM für eine Zelle verwenden, denken Sie zunächst daran, dass nur Leerzeichen entfernt werden. Dies bedeutet per Definition, dass nur Zeichen mit dem ASCII-Code 32 entfernt werden. Leider gibt es andere ASCII-Zeichen, die als „Leerzeichen“ angezeigt werden, aber keine Leerzeichen sind. Diese werden von TRIM nicht entfernt.

Es wäre hilfreich, wenn Sie herausfinden könnten, was diese lästigen Charaktere sind, oder? Wenn der Text in der Zelle nicht so lang ist, finden Sie hier ein praktisches kleines Makro, das den Zelleninhalt betrachtet und jedes Zeichen zusammen mit seinem ASCII-Wert anzeigt:

Sub StringContents()

Dim sTemp As String     Dim sMsg As String     Dim J As Integer          If Selection.Cells.Count > 1 Then         sMsg = "Please select only one cell"

Else         sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf         For J = 1 To Len(ActiveCell.Value)

sTemp = Mid(ActiveCell.Value, J, 1)

sMsg = sMsg & ">" & sTemp & "<     " & Asc(sTemp) & vbCrLf         Next J     End If     MsgBox sMsg End Sub

Um das Makro zu verwenden, wählen Sie einfach die einzelne Zelle aus, die Sie testen möchten, und führen Sie sie dann aus. Am Ende erhalten Sie ein Meldungsfeld, in dem die vollständige Zeichenfolge zusammen mit jedem einzelnen Zeichen in der Zeichenfolge angezeigt wird.

Sobald Sie den ASCII-Wert des fehlerhaften Zeichens kennen, den TRIM nicht entfernt, können Sie dieses Zeichen ersetzen. Wenn der Nicht-Leerzeichen-Bereich beispielsweise einen ASCII-Wert von 160 anzeigt, können Sie die Ersetzung folgendermaßen durchführen:

=SUBSTITUTE(A1,CHAR(160)," ")

Dies ersetzt das tatsächliche Leerzeichen für alle ASCII 160-Zeichen in der Zeichenfolge. Sie können auf ähnliche Weise andere ähnliche falsche Leerzeichen entfernen.

Natürlich können Sie versuchen, eine andere Excel-Funktion zu verwenden, um einige der nicht druckbaren ASCII-Zeichen zu entfernen, z. B.:

=CLEAN(A1)

Es wird nicht alles los, aber es macht einen guten Job, viele der beleidigenden Charaktere aufzuräumen.

Sie können sogar Funktionen in Ihrer Bereinigungsformel auf folgende Weise kombinieren:

=TRIM(CLEAN(A1))

Sie können auf folgende Weise noch einen Schritt weiter gehen:

=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))

Diese Formel entfernt die ASCII 160-Zeichen sowie die von CLEAN erfassten Dinge und führt dann eine TRIM für dieses Ergebnis durch.

Wenn Sie einige Zellen reinigen müssen oder wenn Sie die Zellen regelmäßig reinigen müssen, sollten Sie ein Makro verwenden, um das schwere Heben durchzuführen. Das folgende Makro entfernt viele nicht druckbare Zeichen und lässt nur die sichtbaren Zeichen und Satzzeichen übrig.

Sub CleanCells()

Dim rTarget As Range     Dim c As Range     Dim sTemp As String     Dim J As Integer          Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2)

For Each c In rTarget         sTemp = c.Value         For J = 1 To 31             sTemp = Replace(sTemp, Chr(J), " ")

Next J         For J = 127 To 255             sTemp = Replace(sTemp, Chr(J), " ")

Next J         c.Value = sTemp     Next c End Sub

Das Makro funktioniert nur für die Zellen in der aktuellen Auswahl, die konstante Werte enthalten. Mit anderen Worten, jene Zellen, die keine Formeln enthalten.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (5132) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.