Erstes und letztes Zeichen bedingt entfernen

Das erste und letzte Zeichen entfernen, wenn …

Mitunter ist es so, dass der eigentliche Zell-Inhalt außen (an erster und an let­zter Posi­tion) in ein spezielles Zeichen einge­fasst wurde. In einem Forum-Beitrag wurde genau diese Prob­lematik geschildert, wo bei manchen Zellen zu Beginn und an let­zter Stelle ein % einge­fügt wor­den ist. Die Forderung war nun, dass bei exakt dieser Kon­stel­la­tion diese bei­den %-Zeichen (und nur diese) ent­fer­nt wer­den soll­ten. Eine entsprechende Muster-Datei kön­nen Sie hier in unserem Blog herun­ter­laden.

Auf die Beson­der­heit­en dieser Tabelle werde ich einge­hen, wenn das Ergeb­nis der Pow­er Query-Abfrage vor­liegt. Zuerst ein­mal wer­den sie Schritt für Schritt den Weg zum Ziel ken­nen­ler­nen. Stand der Dinge: Sie haben entwed­er eigene Dat­en nach dem obi­gen Muster vor­liegen bzw. erstellt oder sie nutzen vorzugsweise meine herun­terge­ladene Vor­lage.

Zu Beginn kön­nen Sie die Dat­en in Spalte A in eine Intel­li­gente Tabelle umwan­deln oder sie lassen diesen Schritt durch Pow­er Query automa­tisch vol­lziehen. In bei­den Fällen es wegen der Ver­gle­ich­barkeit zu den hier gezeigten Abbil­dun­gen wichtig, dass die Dat­en keine Über­schrift haben und die aktive Zelle inner­halb der Dat­en ist. In den Ver­sio­nen Excel 20102013 wählen Sie den Menüpunkt Pow­er Query, ab 2016 ist es der Menüpunkt Dat­en. Anschließend im Menüband Aus bzw. Von Tabelle anklick­en. Umge­hend wird der Pow­er Query-Edi­tor geöffnet und die Dat­en der Tabelle dort hinein importiert:

Der Power Query Editor dirkt nach dem Import

Der Pow­er Query Edi­tor dirkt nach dem Import

Im Gegen­satz zu sehr vie­len anderen mit Pow­er Query zu lösenden Auf­gaben genü­gen hier nicht einige Mausklicks, um zum Ziel zu gelan­gen. Den­noch ist das ganze über­schaubar und für User nach der Ein­steiger-Phase gewiss auch nachvol­lziehbar. Im ersten Schritt soll nun fest­gestellt wer­den, ob das erste als auch das let­zte Zeichen jed­er einzel­nen Zelle ein Prozent-Zeichen ist oder nicht. Dazu auf den Menüpunkt Spalte hinzufü­gen und anschließend Benutzerdefinierte Spalte Klick­en. Es öffnet sich ein Dialogfen­ster:

Das Dialog-Fenster für eine benutzerdefiniete Spalte

Das Dia­log-Fen­ster für eine benutzerdefini­ete Spalte

In das Textfeld Neuer Spal­tenname trage ich eine präg­nante, aus­sagekräftige Beze­ich­nung ein: %*%, was einem Such­be­griff in Excel entsprechen kön­nte. Sie kön­nen natür­lich einen Ihnen genehmen Begriff ver­wen­den, in der endgülti­gen Phase wird diese Spalte nicht mehr sicht­bar sein. In das große Textfeld Benutzerdefinierte Spal­tenformel ist das Gle­ich­heit­sze­ichen fest einge­fügt. Ich räume ein, dass ich auch die Vok­a­beln der nach­fol­gen­den Formel großen­teils sel­ber hier nach­schla­gen musste. Der Text der Formel stellt sich nun so dar:
Text.Start([Spalte1],1)="%" and Text.End([Spalte1],1)="%"
Was sie dabei unbe­d­ingt beacht­en müssen: Prak­tisch alles in Pow­er Query ist Case Sen­si­tiv, also sie müssen exakt die hier gezeigte bzw. in der MS-Web­site dargestellte Groß- Klein­schrei­bung beacht­en. Den Spal­tenna­men kön­nen Sie durch Dop­pelk­lick auf den Namen der ver­füg­baren Spalte im kleineren der bei­den Fen­ster (rechts) übernehmen bzw. markieren und dann auf « Ein­fü­gen Klick­en. Dabei wer­den dann die eck­i­gen Klam­mern automa­tisch mit einge­fügt. Prinzip­iell ist diese Funk­tion eine Behaup­tung, ein Wahrheitswert dass das erste und das let­zte Zeichen des Feldes in der Spalte mit der Über­schrift Spalte1 das gesuchte % ist. Das Ergeb­nis wird nach einem OK in die neu erstellte Spalte in englis­ch­er Schreib­weise FALSE bzw. TRUE einge­tra­gen:

Die neue, ausgefüllte Spalte mit den TRUE/FALSE-Werten

Die neue Spalte mit den Logik-Werten

Diese Werte kön­nen nun als Argu­ment für eine Behand­lung der Zelle genutzt wer­den. Ist der Wert TRUE dann muss das erste und das let­zte Zeichen gelöscht wer­den. Aber auch hier gilt, dass die bekan­nten Excel Formeln aus Plain Excel oder VBA nicht ver­wen­det wer­den kön­nen. Es ist wiederum die Sprache M, welche uns die Vok­a­beln für die Formel zur Ver­fü­gung stellt. Wie bere­its im vorheri­gen Schritt erstellen Sie eine neue Spalte. Ich ver­wende der besseren Aus­sagekraft wegen den: Titel ohne %*% und gebe dann fol­gende Formel ein:
if [#"%*%"]=true then Text.Middle([Spalte1],1,Text.Length([Spalte1])-2) else [Spalte1]
wobei es hier beson­ders ein­fach ist, wenn sie die Spal­tenna­men aus dem Bere­ich Ver­füg­bare Spal­ten übernehmen; dadurch wird beispiel­sweise auch das #-Zeichen automa­tisch an passender Stelle einge­fügt. Die einzige Beson­der­heit in dieser Formel ist, dass der Begriff true klein geschrieben wer­den muss, obwohl es in der Spalte des Edi­tors GROSS geschrieben ist. Es han­delt sich dabei um einen definierten Schlüs­sel­be­griff.

Ich räume ein, dass auch ich auch diese Vok­a­beln etwas zusam­men­su­chen musste. Falls es Sie wun­dert, dass bei der Funk­tion Mid­dle der Wert 1 als 1. Zeichen des zu gener­ieren denn String und von der berech­neten Länge 2 Zeichen abge­zo­gen wer­den, dann bedenken Sie, dass die Rück­gabe­w­erte dieser Funk­tion 0‑basiert sind. Nach wiederum einem Klick auf die Schalt­fläche OK erken­nen sie, dass in der neuen Spalte die Forderung zu 100 % erfüllt ist:

Das Ergebnis steht für einen Vergleich bereit

Das Ergeb­nis ste­ht für einen Ver­gle­ich bere­it

Nutzen Sie die Gele­gen­heit, die berech­neten Ergeb­nisse zu ver­i­fizieren und bei Zweifeln zu erken­nen, warum das Ergeb­nis den­noch richtig ist. Hier einige Hin­weise, die sie in ihre Über­legun­gen mit ein­beziehen soll­ten:

  • Zeile 7: Eigentlich ein Selb­st­gänger, der Form hal­ber aber erwäh­nt: Jut­ta ist zwar in &-Zeichen einge­fasst aber es zählt immer die kom­plette Zelle. Und diese begin­nt nicht mit dem &.
  • Zeile 8: Dass das Ergeb­nis mit einem Leerze­ichen begin­nt ist „natür­lich” kor­rekt, denn es wurde ja nur das & ent­fer­nt und das fol­gende, nun erste Zeichen ist ein Leerze­ichen.
  • Zeile 9: Vielle­icht auf den ersten Blick etwas ver­wun­der­lich, denn zu Anfang und am Ende ste­ht ja das Amper­sand. Aber diese Aus­sage ist nicht ganz richtig, denn das 1. Zeichen in Spalte1 ist ein Leerze­ichen, darum ist die Berech­nung durch Pow­er Query kor­rekt.
  • Zeile 10: Auch ein Selb­st­gänger. Denn es soll ja nur ein einziges & jew­eils vorne und hin­ten ent­fer­nt wer­den und dieser Vor­gang wird auch nur ein Mal durchge­führt.

Was jet­zt noch bleibt: Markieren Sie die ersten bei­den Spal­ten und dann beispiel­sweise Entf oder zeigen Sie in eine der bei­den markierten Über­schriften, Recht­sklick und Spal­ten ent­fer­nen. Anschließend Reg­is­ter Start und dort den Rib­bon Schließen & laden Klick­en. Die kom­plette Tabelle (ein­schließlich der Über­schrift) kön­nen Sie nun aus dem getren­nt angelegten Arbeits­blatt auss­chnei­den und an beliebiger Stelle beispiel­sweise im Blatt Tabelle1 ein­fü­gen. – Das endgültige Ergeb­nis kön­nen Sie hier herun­ter­laden.

Gemäß der Logik von Pow­er Query gilt: Wenn sich die Quell­dat­en verän­dern, sei es durch löschen edi­tieren oder hinzufü­gen genügt es, wenn sie eine Zelle des Abfrage-Ergeb­niss­es markieren, den dann sicht­baren Menüpunkt Abfrage aktivieren und auf die Schalt­fläche Aktu­al­isieren Klick­en. Alle Änderun­gen wer­den umge­hend über­nom­men. Hin­weis: Für die Aktu­al­isierung gibt es noch diverse andere Möglichkeit­en.

Und last but not least: Auch inner­halb Pow­er Query ist es über die Stan­dard-Menü­funk­tion­al­ität Trans­formieren | For­matieren | Kürzen möglich, führende und nach­fol­gende Leer­stellen zu ent­fer­nen, was der Excel-Funk­tion GLÄTTEN() entspricht.

▲ nach oben …

Dieser Beitrag wurde unter Allgemein, Verschiedenes, Ohne Makro/VBA, Power Query, PQ-Formeln (Sprache M), Text-Behandlung abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.