Inhaltsverzeichnis
Möchten Sie Leerzeichen möglichst effektiv behandeln? Verwenden Sie reguläre Ausdrücke, um alle Leerzeichen in einer Zelle zu entfernen, mehrere Leerzeichen durch ein einzelnes Zeichen zu ersetzen, Leerzeichen nur zwischen Zahlen zu entfernen und vieles mehr.
Unabhängig davon, welche Eingabedaten Sie verwenden, werden Sie kaum auf einen Datensatz ohne Leerzeichen stoßen. In den meisten Fällen ist Leerraum gut - Sie verwenden ihn, um verschiedene Informationen visuell zu trennen, damit sie leichter wahrgenommen werden können. In manchen Situationen kann er jedoch zum Übel werden - zusätzliche Leerzeichen können Ihre Formeln durcheinander bringen und Ihre Arbeitsblätter fast unhandlich machen.
Warum sollten reguläre Ausdrücke verwendet werden, um Leerzeichen in Excel zu entfernen?
Bevor wir in die Feinheiten der Verwendung regulärer Ausdrücke zum Entfernen von Leerzeichen in Excel-Arbeitsblättern eintauchen, möchte ich auf die Frage eingehen, die mir als Erstes in den Sinn kommt - warum brauchen wir Regexes, wenn Excel bereits die TRIM-Funktion hat?
Um den Unterschied zu verstehen, sehen wir uns an, was in beiden Fällen als Leerzeichen gilt:
- Die eingebaute TRIM-Funktion kann nur die Leerzeichen die im 7-Bit-ASCII-System den Wert 32 hat.
- Reguläre Ausdrücke können verschiedene Formen von Leerzeichen erkennen, wie z. B. das Leerzeichen ( ), den Tabulator (\t), den Wagenrücklauf (\r) und den Zeilenumbruch (\n). Außerdem gibt es die Whitespace-Zeichen (\s), die mit all diesen Typen übereinstimmt und bei der Bereinigung der rohen Eingabedaten äußerst hilfreich ist.
Wenn man genau weiß, was hinter den Kulissen passiert, ist es viel einfacher, eine Lösung zu finden, oder?
So aktivieren Sie reguläre Ausdrücke in Excel
Es ist bekannt, dass Excel keine regulären Ausdrücke unterstützt. Um sie zu aktivieren, müssen Sie eine benutzerdefinierte VBA-Funktion erstellen. Glücklicherweise haben wir bereits eine, nämlich RegExpReplace Moment, warum "ersetzen", wenn es um das Entfernen geht? In Excel ist "entfernen" nur ein anderes Wort für "durch eine leere Zeichenfolge ersetzen" :)
Um die Funktion zu Ihrem Excel hinzuzufügen, kopieren Sie einfach den Code von dieser Seite, fügen Sie ihn in den VBA-Editor ein und speichern Sie Ihre Datei als makrofähige Arbeitsmappe (.xlsm).
Hier ist die Syntax der Funktion zu Ihrer Information:
RegExpReplace(text, muster, ersatz, [instance_num], [match_case])Die ersten drei Argumente sind erforderlich, die letzten beiden sind optional.
Wo:
- Text - die ursprüngliche Zeichenfolge, in der gesucht werden soll.
- Muster - die Regex, nach der gesucht werden soll.
- Ersatz - den Text, der durch ersetzt werden soll. zu entfernen Leerräume setzen Sie dieses Argument auf entweder:
- leere Zeichenkette (""), um absolut alle Leerzeichen zu entfernen
- Raum Zeichen (" "), um mehrere Leerzeichen durch ein einzelnes Leerzeichen zu ersetzen
- Instanz_num (optional) - die Nummer der Instanz; in den meisten Fällen wird sie weggelassen, um alle Instanzen zu ersetzen (Standard).
- Match_case (optional) - ein boolescher Wert, der angibt, ob die Groß- und Kleinschreibung beachtet (TRUE) oder ignoriert (FALSE) werden soll; bei Leerzeichen ist er irrelevant und wird daher weggelassen.
Weitere Informationen finden Sie unter RegExpReplace-Funktion.
Entfernen von Leerzeichen mit regex - Beispiele
Nachdem Sie die Funktion RegExpReplace zu Ihrer Arbeitsmappe hinzugefügt haben, wollen wir nun verschiedene Szenarien nacheinander angehen.
Alle Leerzeichen mit regex entfernen
Um alle Leerzeichen in einer Zeichenfolge zu entfernen, suchen Sie einfach nach allen Leerzeichen, einschließlich Leerzeichen, Tabulator, Wagenrücklauf und Zeilenvorschub, und ersetzen sie durch eine leere Zeichenfolge ("").
Muster : \s+
Ersatz : ""
Angenommen, die Quellzeichenfolge steht in A5, dann lautet die Formel in B5:
=RegExpReplace(A5, "\s+", "")
Um die Verwaltung Ihrer Muster zu vereinfachen, können Sie die Regex in eine vordefinierte Zelle eingeben und sie mit einem absoluten Verweis wie $A$2 in die Formel eingeben, so dass die Zelladresse beim Kopieren der Formel in der Spalte unverändert bleibt.
=RegExpReplace(A5, $A$2, "")
Mehr als ein Leerzeichen entfernen
Zum Entfernen zusätzliches Leerzeichen (d. h. mehr als ein aufeinanderfolgendes Leerzeichen), verwenden Sie dieselbe Regex \s+, ersetzen aber die gefundenen Übereinstimmungen durch ein einzelnes Leerzeichen.
Muster : \s+
Ersatz : " "
=RegExpReplace(A5, "\s+", " ")
Bitte beachten Sie, dass diese Formel ein Leerzeichen nicht nur zwischen den Wörtern, sondern auch am Anfang und Ende einer Zeichenkette beibehält, was nicht gut ist. Um führende und nachfolgende Leerzeichen loszuwerden, verschachteln Sie die obige Formel in eine andere RegExpReplace-Funktion, die Leerzeichen am Anfang und Ende entfernt:
=RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+
Regex zum Entfernen führender und nachfolgender Leerzeichen
Um nach Leerzeichen am Anfang oder Ende einer Zeile zu suchen, verwenden Sie die Anker start ^ und end $.
Führend Leerzeichen:
Muster : ^[\s]+
Nachlaufende Leerzeichen:
Muster : [\s]+$
Führend und nachlaufend Leerzeichen:
Muster : ^[\s]+
Unabhängig davon, welche Regex Sie wählen, ersetzen Sie die Übereinstimmungen durch nichts.
Ersatz : ""
Um z. B. alle Leerzeichen am Anfang und am Ende einer Zeichenfolge in A5 zu entfernen, lautet die Formel:
=RegExpReplace(A5, "^[\s]+
Wie in der Abbildung unten zu sehen ist, werden dabei nur die führenden und nachfolgenden Leerzeichen entfernt, die Zwischenräume zwischen den Wörtern bleiben erhalten, so dass das Auge des Lesers ein angenehmes Bild erhält.
Zusätzliche Leerzeichen entfernen, aber Zeilenumbrüche beibehalten
Wenn Sie mit mehrzeiligen Zeichenfolgen arbeiten, möchten Sie vielleicht zusätzliche Leerzeichen entfernen, aber Zeilenumbrüche beibehalten. Suchen Sie dazu anstelle des Leerzeichens \s nach Leerzeichen [ ] oder Leerzeichen und Tabulatoren [\t ]. Letzteres Muster ist praktisch, wenn Ihre Quelldaten aus einer anderen Quelle importiert werden, z. B. aus einem Texteditor.
Angenommen, Sie möchten in dem unten stehenden Datensatz alle führenden/nachfolgenden Leerzeichen und alle Zwischenräume bis auf eines abschneiden, wobei mehrere Zeilen intakt bleiben sollen. Um diese Aufgabe zu erfüllen, benötigen Sie zwei verschiedene RegExpReplace-Funktionen.
Die erste Funktion ersetzt mehrere Leerzeichen durch ein einzelnes Leerzeichen.
=RegExpReplace(A5, " +", " ")
Bei der anderen werden die Leerzeichen am Anfang und Ende einer Zeile entfernt:
=RegExpReplace(A5, "^ +
Verschachteln Sie die beiden Funktionen einfach ineinander:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +
Und Sie werden ein perfektes Ergebnis erzielen:
Regex zum Ersetzen mehrerer Leerzeichen durch ein Zeichen
Wenn Sie alle Leerzeichen aus einer Zeichenkette entfernen und jede Gruppe von aufeinanderfolgenden Leerzeichen durch ein bestimmtes Zeichen ersetzen möchten, müssen Sie Folgendes tun:
Verwenden Sie zunächst diese Regex, um führende und nachgestellte Leerzeichen zu entfernen:
=RegExpReplace(A8, "^[\s]+
Geben Sie dann die obige Funktion an die Text Argument eines anderen RegExpReplace, das ein oder mehrere aufeinanderfolgende Leerzeichen durch das von Ihnen angegebene Zeichen, z. B. einen Bindestrich, ersetzt:
Muster : \s+
Ersatz : -
Angenommen, die Quellzeichenkette steht in A8, dann sieht die Formel folgendermaßen aus:
=RegExpReplace(RegExpReplace(A8, "^[\s]+
Sie können die Muster und Ersetzungen auch in separate Zellen eingeben, wie im Screenshot gezeigt:
Regex zum Entfernen von Leerzeilen
Hier eine Frage, die von Benutzern, die mehrere Zeilen in einer Zelle haben, häufig gestellt wird: "Ich habe viele Leerzeilen in meinen Zellen. Gibt es eine andere Möglichkeit, sie loszuwerden, als jede Zelle durchzugehen und jede Zeile manuell zu löschen?" Die Antwort: Das ist einfach!
Um leere Zeilen zu finden, die vom Anfang ^ der aktuellen Zeile bis zur nächsten Zeile \n kein einziges Zeichen enthalten, lautet die Regex:
Muster : ^\n
Wenn Ihre visuell leeren Zeilen Leerzeichen oder Tabulatoren enthalten, verwenden Sie diesen regulären Ausdruck:
Muster : ^[\t ]*\n
Ersetzen Sie die Regex mit dieser Formel einfach durch eine leere Zeichenkette, und alle Leerzeilen sind auf einmal weg!
=RegExpReplace(A5, $A$2, "")
Entfernen von Leerzeichen mit RegEx Tools
Die obigen Beispiele haben nur einen kleinen Teil der wunderbaren Möglichkeiten gezeigt, die Regexes bieten. Leider sind nicht alle Funktionen der klassischen regulären Ausdrücke in VBA verfügbar.
Glücklicherweise sind die RegEx-Tools, die in unserer Ultimate Suite enthalten sind, frei von diesen Einschränkungen, da sie von Microsofts .NET RegEx-Engine verarbeitet werden. Dadurch können Sie anspruchsvollere Muster konstruieren, die von VBA RegExp nicht unterstützt werden. Unten finden Sie ein Beispiel für einen solchen regulären Ausdruck.
Regex zum Entfernen von Leerzeichen zwischen Zahlen
Angenommen, Sie möchten in einer alphanumerischen Zeichenfolge nur die Leerzeichen zwischen den Zahlen entfernen, so dass aus einer Zeichenfolge wie "A 1 2 B" "A 12 B" wird.
Um ein Leerzeichen zwischen zwei beliebigen Ziffern zu finden, können Sie die folgenden Ausweichmöglichkeiten verwenden:
Muster : (?<=\d)\s+(?=\d)
Um eine Formel auf der Grundlage der oben genannten Regexe zu erstellen, sind zwei einfache Schritte erforderlich:
- Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf Regex-Werkzeuge .
- Auf der Regex-Werkzeuge wählen Sie die Quelldaten, geben Sie Ihre Regex ein, wählen Sie die entfernen und drücken Sie entfernen .
Um die Ergebnisse als Formeln und nicht als Werte zu erhalten, müssen Sie ein Häkchen in das Feld Als Formel einfügen Kontrollkästchen.
Gleich sehen Sie die AblebitsRegexRemove in eine neue Spalte rechts neben den ursprünglichen Daten eingefügt.
Alternativ können Sie die Regex in eine Zelle, z. B. A5, eingeben und die Formel direkt in eine Zelle einfügen, indem Sie die Funktion einfügen Dialogfeld, in dem AblebitsRegexRemove ist kategorisiert unter AblebitsUDFs .
Da diese Funktion speziell für das Entfernen von Zeichenketten konzipiert ist, benötigt sie nur zwei Argumente - die Eingabezeichenkette und den Regex:
=AblebitsRegexRemove(A5, $A$2)
So werden Leerzeichen in Excel mit regulären Ausdrücken entfernt. Ich danke Ihnen für die Lektüre und freue mich, Sie nächste Woche in unserem Blog begrüßen zu dürfen!
Verfügbare Downloads
Leerzeichen mit Regex entfernen - Beispiele (.xlsm-Datei)
Ultimate Suite - Testversion (.exe-Datei)