Erstes und letztes Zeichen bedingt entfernen

Das erste und letzte Zeichen entfernen, wenn …

Mit­un­ter ist es so, dass der ei­gent­li­che Zell-In­halt au­ßen (an ers­ter und an let­zter Posi­tion) in ein spe­zi­el­les Zei­chen einge­fasst wur­de. In ei­nem Fo­rum-Bei­trag wur­de ge­nau die­se Prob­lematik ge­schil­dert, wo bei man­chen Zel­len zu Be­ginn und an let­zter Stel­le ein % einge­fügt wor­den ist. Die For­de­rung war nun, dass bei ex­akt die­ser Kon­stel­la­tion die­se bei­den %-Zei­chen (und nur die­se) ent­fer­nt wer­den soll­ten. Eine ent­spre­chen­de Mus­ter-Da­tei kön­nen Sie hier in un­se­rem Blog herun­ter­laden.

Auf die Beson­der­heit­en die­ser Ta­bel­le wer­de ich einge­hen, wenn das Ergeb­nis der Pow­er Que­ry-Ab­fra­ge vor­liegt. Zu­erst ein­mal wer­den sie Schritt für Schritt den Weg zum Ziel ken­nen­ler­nen. Stand der Din­ge: Sie ha­ben entwed­er ei­ge­ne Dat­en nach dem obi­gen Mus­ter vor­liegen bzw. er­stellt oder sie nut­zen vor­zugs­wei­se mei­ne herun­terge­ladene Vor­lage.

Zu Be­ginn kön­nen Sie die Dat­en in Spal­te A in eine Intel­li­gente Ta­bel­le umwan­deln oder sie las­sen die­sen Schritt durch Pow­er Que­ry automa­tisch vol­lziehen. In bei­den Fäl­len es we­gen der Ver­gle­ich­barkeit zu den hier ge­zeig­ten Abbil­dun­gen wich­tig, dass die Dat­en kei­ne Über­schrift ha­ben und die ak­ti­ve Zel­le inner­halb der Dat­en ist. In den Ver­sio­nen Ex­cel 20102013 wäh­len Sie den Me­nü­punkt Pow­er Que­ry, ab 2016 ist es der Me­nü­punkt Dat­en. An­schlie­ßend im Men­üband Aus bzw. Von Ta­bel­le anklick­en. Umge­hend wird der Pow­er Que­ry-Edi­tor ge­öff­net und die Dat­en der Ta­bel­le dort hin­ein im­por­tiert:

Der Power Query Editor dirkt nach dem Import

Der Pow­er Que­ry Edi­tor dirkt nach dem Im­port

Im Gegen­satz zu sehr vie­len an­de­ren mit Pow­er Que­ry zu lö­sen­den Auf­gaben genü­gen hier nicht ei­ni­ge Maus­klicks, um zum Ziel zu gelan­gen. Den­noch ist das gan­ze über­schaubar und für User nach der Ein­steiger-Phase ge­wiss auch nachvol­lziehbar. Im ers­ten Schritt soll nun fest­gestellt wer­den, ob das ers­te als auch das let­zte Zei­chen jed­er einzel­nen Zel­le ein Pro­zent-Zei­chen ist oder nicht. Dazu auf den Me­nü­punkt Spal­te hinzufü­gen und an­schlie­ßend Be­nut­zer­de­fi­nier­te Spal­te Klick­en. Es öff­net sich ein Dialogfen­ster:

Das Dialog-Fenster für eine benutzerdefiniete Spalte

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

In das Text­feld Neu­er Spal­tenname tra­ge ich eine präg­nante, aus­sagekräftige Beze­ich­nung ein: %*%, was ei­nem Such­be­griff in Ex­cel ent­spre­chen kön­nte. Sie kön­nen natür­lich ei­nen Ih­nen ge­neh­men Be­griff ver­wen­den, in der endgülti­gen Pha­se wird die­se Spal­te nicht mehr sicht­bar sein. In das gro­ße Text­feld Be­nut­zer­de­fi­nier­te Spal­tenformel ist das Gle­ich­heit­sze­ichen fest einge­fügt. Ich räu­me ein, dass ich auch die Vok­a­beln der nach­fol­gen­den For­mel großen­teils sel­ber hier nach­schla­gen muss­te. Der Text der For­mel stellt sich nun so dar:
Text.Start([Spalte1],1)="%" and Text.End([Spalte1],1)="%"
Was sie da­bei unbe­d­ingt beacht­en müs­sen: Prak­tisch al­les in Pow­er Que­ry ist Case Sen­si­tiv, also sie müs­sen ex­akt die hier ge­zeig­te bzw. in der MS-Web­site dar­ge­stell­te Groß- Klein­schrei­bung beacht­en. Den Spal­tenna­men kön­nen Sie durch Dop­pelk­lick auf den Na­men der ver­füg­baren Spal­te im klei­ne­ren der bei­den Fen­ster (rechts) über­neh­men bzw. mar­kie­ren und dann auf « Ein­fü­gen Klick­en. Da­bei wer­den dann die eck­i­gen Klam­mern automa­tisch mit einge­fügt. Prinzip­iell ist die­se Funk­tion eine Behaup­tung, ein Wahr­heits­wert dass das ers­te und das let­zte Zei­chen des Fel­des in der Spal­te mit der Über­schrift Spal­te1 das ge­such­te % ist. Das Ergeb­nis wird nach ei­nem OK in die neu er­stell­te Spal­te in englis­ch­er Schreib­weise FAL­SE bzw. TRUE einge­tra­gen:

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

Die neue Spal­te mit den Lo­gik-Wer­ten

Die­se Wer­te kön­nen nun als Argu­ment für eine Behand­lung der Zel­le ge­nutzt wer­den. Ist der Wert TRUE dann muss das ers­te und das let­zte Zei­chen ge­löscht wer­den. Aber auch hier gilt, dass die bekan­nten Ex­cel For­meln aus Plain Ex­cel oder VBA nicht ver­wen­det wer­den kön­nen. Es ist wie­der­um die Spra­che M, wel­che uns die Vok­a­beln für die For­mel zur Ver­fü­gung stellt. Wie bere­its im vorheri­gen Schritt er­stel­len Sie eine neue Spal­te. Ich ver­wende der bes­se­ren Aus­sagekraft we­gen den: Ti­tel ohne %*% und gebe dann fol­gende For­mel ein:
if [#"%*%"]=true then Text.Middle([Spalte1],1,Text.Length([Spalte1])-2) else [Spalte1]
wo­bei es hier beson­ders ein­fach ist, wenn sie die Spal­tenna­men aus dem Bere­ich Ver­füg­bare Spal­ten über­neh­men; da­durch wird beispiel­sweise auch das #-Zei­chen automa­tisch an pas­sen­der Stel­le einge­fügt. Die ein­zi­ge Beson­der­heit in die­ser For­mel ist, dass der Be­griff true klein ge­schrie­ben wer­den muss, ob­wohl es in der Spal­te des Edi­tors GROSS ge­schrie­ben ist. Es han­delt sich da­bei um ei­nen de­fi­nier­ten Schlüs­sel­be­griff.

Ich räu­me ein, dass auch ich auch die­se Vok­a­beln et­was zusam­men­su­chen muss­te. Falls es Sie wun­dert, dass bei der Funk­tion Mid­dle der Wert 1 als 1. Zei­chen des zu gener­ieren denn String und von der berech­neten Län­ge 2 Zei­chen abge­zo­gen wer­den, dann be­den­ken Sie, dass die Rück­gabe­w­erte die­ser Funk­tion 0‑ba­siert sind. Nach wie­der­um ei­nem Klick auf die Schalt­fläche OK erken­nen sie, dass in der neu­en Spal­te die For­de­rung zu 100 % er­füllt ist:

Das Ergebnis steht für einen Vergleich bereit

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

Nut­zen Sie die Gele­gen­heit, die berech­neten Ergeb­nisse zu ver­i­fizieren und bei Zwei­feln zu erken­nen, war­um das Ergeb­nis den­noch rich­tig ist. Hier ei­ni­ge Hin­weise, die sie in ihre Über­legun­gen mit ein­beziehen soll­ten:

  • Zei­le 7: Ei­gent­lich ein Selb­st­gänger, der Form hal­ber aber erwäh­nt: Jut­ta ist zwar in &-Zei­chen einge­fasst aber es zählt im­mer die kom­plette Zel­le. Und die­se begin­nt nicht mit dem &.
  • Zei­le 8: Dass das Ergeb­nis mit ei­nem Leerze­ichen begin­nt ist „natür­lich” kor­rekt, denn es wur­de ja nur das & ent­fer­nt und das fol­gende, nun ers­te Zei­chen ist ein Leerze­ichen.
  • Zei­le 9: Vielle­icht auf den ers­ten Blick et­was ver­wun­der­lich, denn zu An­fang und am Ende ste­ht ja das Amper­sand. Aber die­se Aus­sage ist nicht ganz rich­tig, denn das 1. Zei­chen in Spal­te1 ist ein Leerze­ichen, dar­um ist die Berech­nung durch Pow­er Que­ry kor­rekt.
  • Zei­le 10: Auch ein Selb­st­gänger. Denn es soll ja nur ein ein­zi­ges & jew­eils vor­ne und hin­ten ent­fer­nt wer­den und die­ser Vor­gang wird auch nur ein Mal durchge­führt.

Was jet­zt noch bleibt: Mar­kie­ren Sie die ers­ten bei­den Spal­ten und dann beispiel­sweise Entf oder zei­gen Sie in eine der bei­den mar­kier­ten Über­schriften, Recht­sklick und Spal­ten ent­fer­nen. An­schlie­ßend Reg­is­ter Start und dort den Rib­bon Schlie­ßen & la­den Klick­en. Die kom­plette Ta­bel­le (ein­schließlich der Über­schrift) kön­nen Sie nun aus dem getren­nt an­ge­leg­ten Arbeits­blatt auss­chnei­den und an be­lie­bi­ger Stel­le beispiel­sweise im Blatt Ta­bel­le1 ein­fü­gen. – Das end­gül­ti­ge Ergeb­nis kön­nen Sie hier herun­ter­laden.

Ge­mäß der Lo­gik von Pow­er Que­ry gilt: Wenn sich die Quell­dat­en verän­dern, sei es durch lö­schen edi­tieren oder hinzufü­gen ge­nügt es, wenn sie eine Zel­le des Abfrage-Ergeb­niss­es mar­kie­ren, den dann sicht­baren Me­nü­punkt Ab­fra­ge ak­ti­vie­ren 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 di­ver­se an­de­re Möglichkeit­en.

Und last but not least: Auch inner­halb Pow­er Que­ry ist es über die Stan­dard-Menü­funk­tion­al­ität Trans­formieren | For­matieren | Kür­zen mög­lich, füh­ren­de und nach­fol­gende Leer­stellen zu ent­fer­nen, was der Excel-Funk­tion GLÄT­TEN() ent­spricht.

▲ 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.