| Nicht druckbare Zeichen entfernen |
|
| Fragen und Antworten zu Excel - Makro- und VBA-Lösungen | |||
| Geschrieben von: Frank Arendt-Theilen | |||
|
Nach dem Import einer TXT- oder CSV-Datei sind immer wieder nicht lesbare Zeichen in den Zellen enthalten. Die Funktion Suchen & Ersetzen hilft mir nicht weiter. Wie werde ich diese Zeichen los? Excel hat die integrierte Funktion SÄUBERN(). Diese Funktion entfernt alle nicht druckbaren Zeichen des 7-Bit-ASCII-Codes (Steuerzeichen mit dem Wert zwischen 0 und 31).Enthält z.B. die Zelle A1 eine Textkonstante mit nicht druckbaren Zeichen, lautet die Formel:
Allerdings bleiben dabei einige nicht druckbare Zeichen des Unicodes erhalten. Dies sind die Zeichen mit dem Code 127, 129, 141, 143, 144 und 157. Damit zum einen die Textkonstanten direkt bearbeitet und zum anderen alle nicht druckbaren Zeichen entfernt werden, soll ein Makro die Arbeit erledigen. Kopieren Sie das folgende Makro in ein Standardmodul der persönlichen Makroarbeitsmappe. Damit steht es für alle geöffneten Arbeitsmappen zur Verfügung.
Das Makro führt eine For Each ... Next-Schleife über alle Zellen im aktuellen Tabellenblatt aus, die einen konstanten Wert enthalten und entfernt die nicht druckbaren Zeichen. Formelzellen bleiben unberühert. Zunächst entfernt die Anweisung rngZelle.Value = Application.WorksheetFunction.Clean(rngZelle.Value) alle nicht druckbaren Zeichen des 7-Bit-ASCII-Codes. Anschließend wird mit der If-Anweisung nach jedem noch eventuell vorhandenem, nicht druckbaren Zeichen aus dem Unicode 127, 129, 141, 143, 144 und 157 gesucht und bei Vorhandensein mit der Replace-Funktion gegen Nichts ("") ausgetauscht. Der Like-Operator vereinfacht durch die Verwendung des * (Sternchen) als Ersatzzeichen für mehrere Zeichen das Durchsuchen der jeweiligen Konstanten.
Schlüsselwörter: |
|||
| Zuletzt aktualisiert am Samstag, den 28. April 2012 um 00:38 Uhr |






Kommentare
Lässt sich Säubern vielleicht zusammen mit WECHSELN nutzen? Als zu wechselndes Zeichen würde ich dann ZEICHEN(127) etc gegen "" eintragen. Nur eine Idee und noch nicht getestet.
Vielleicht mal bis zu den Anwender- oder Trainertagen
Andreas Thehos
genau das erledigt das obige Makro, ansonsten müsste ich eine sechsfach verschachtelte WECHSELN()-Formel aufbauen.
Mit freundlichem Gruß aus der Rattenfängersta dt Hameln
Frank Arendt-Theilen