(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

TEXT.TRIM.LEFT und TEXT.TRIM.RIGHT

Benutzerdefinierte Funktionen, die mithilfe der kürzlich in Excel eingeführten LAMBDA-Funktion angelegt wurden, lassen sich auch rekursiv verwenden, sofern eine Abbruchbedingung innerhalb der Funktion implementiert wurde. Derzeit sind solche Funktionen meiner Ansicht nach jedoch recht schwer zu debuggen – ich hoffe, dass das Excel-Team in Zukunft vielleicht Werkzeuge dazu zur Verfügung stellt.

Ich habe somit erstmal mit einfachen Funktionen experimentiert. Eingefallen sind mir die beiden Funktionen TEXT.TRIM.LEFT und TEXT.TRIM.RIGHT, die respektive von links oder rechts aus gesehen ein anzugebendes Zeichen aus einem Text entfernen sollen. Und zwar solange bis das aktuelle Zeichen nicht mehr dem zu entfernenden Zeichen entspricht.

TEXT.TRIM.LEFT und TEXT.TRIM.RIGHT

Anforderungen

Die beiden Funktionen sollen ein einzelnes Zeichen aus einem übergebenen Text von links oder rechts entfernen. Die Syntax ist jeweils:

=TEXT.TRIM.LEFT(Value;Character)
=TEXT.TRIM.RIGHT(Value;Character)

Einige Anwendungsbeispiele sind:

=TEXT.TRIM.LEFT(A2;B2)
=TEXT.TRIM.LEFT("AA123ZZ";"A")

=TEXT.TRIM.RIGHT(A4;B4)
=TEXT.TRIM.RIGHT("AA123ZZ";"Z")

TEXT.TRIM.LEFT

Angenommen, wir möchten aus der Zeichenkette AA123 von links aus gesehen alle Zeichen A entfernen. Wir übergeben somit der Funktion TEXT.TRIM.LEFT im ersten Argument Value den Wert AA123 und im zweiten Argument Character den Wert A.

Die Funktion prüft, ob das erste Zeichen in Value ein A ist, was hier der Fall ist. Das erste Zeichen wird entfernt und A123 wieder als Argument an dieselbe Funktion TEXT.TRIM.LEFT übergeben. Es wird derselbe Vorgang durchgeführt wie zuvor und das erste Zeichen auf A geprüft, was ebenfalls der Fall ist. Das Zeichen A wird entfernt und 123 an TEXT.TRIM.LEFT übergeben. Nun findet TEXT.TRIM.LEFT nicht das Zeichen A an erster Position und gibt den Wert 123 zurück, statt sich selbst aufzurufen. Schematisch gesehen, könnte dies wie folgt abgebildet aussehen.

TEXT.TRIM.LEFT Rekursionen

In eine Pseudo-Formel verpackt sieht das wie folgt aus:

=WENN(Erstes Zeichen in Value <> Character; Value;
      TEXT.TRIM.LEFT(Value ohne erstes Zeichen;Character))

Als vollständige Formel ausgedrückt ergibt sich dann:

=WENN(LINKS(Value;1)<>""&Character;Value;
      TEXT.TRIM.LEFT(RECHTS(Value;LÄNGE(Value)-1);Character))

Mit der Funktion LINKS wird das erste Zeichen eines Textes extrahiert, die Funktion RECHTS ermöglicht es den Text von rechts aus gesehen ohne das erste Zeichen zu extrahieren. Das Voranstellen einer leeren Zeichenkette vor Character stellt sicher, dass Character immer als Text interpretiert wird.

Das war’s dann auch schon. Die LAMBDA-Funktion, die ja dann TEXT.TRIM.LEFT heißen muss, lässt sich nun schreiben als:

=LAMBDA(Value;Character;
 WENN(LINKS(Value;1)<>""&Character;Value;
      TEXT.TRIM.LEFT(RECHTS(Value;LÄNGE(Value)-1);Character)))

TEXT.TRIM.RIGHT

Die Funktion in umgekehrter Richtung TEXT.TRIM.RIGHT ist analog zu TEXT.TRIM.LEFT aufgebaut, nur dass sie dann den Text von rechts durchläuft. Die LAMBDA-Funktion lautet in diesem Fall:

=LAMBDA(Value;Character;
 WENN(RECHTS(Value;1)<>""&Character;Value;
      TEXT.TRIM.RIGHT(LINKS(Value;LÄNGE(Value)-1);Character)))

Fazit

Mir stehen nun zwei recht einfache Funktionen zur Verfügung, um aus einem Text von links oder rechts aus ein Zeichen zu entfernen. TEXT.TRIM.LEFT wird später in einer Funktion zur Multiplikation sehr großer Zahlen in Excel verwendet werden.

Happy Exceling :-)

 

 
Comments

No comments yet.