Xtract: Alle Spalten einer Liste sollen zeilenweise so zusammengefasst werden, dass nur mit einem „x” gekennzeichnete Überschriften in 1 Zelle zusammengefasst werden. (Basis-Version)
Wissensstand: Level 2 ⇒ Solides Basiswissen in Excel, etwas Erfahrung in PQ
Spalten mit definiertem Inhalt zusammenführen (Spezial)
Zugegeben, dieses ist nicht die optimale Methode, um per Power Query Spalten, welche einem gewünschten Kriterium entsprechen, zusammenzuführen. Aber es ist ein Weg, um mit möglichst wenig „abstrakten” Formeln und Funktionen sowie ohne Programmierung zum Ziel zu gelangen. Sie nutzen in dieser Übung Power Query und kommen ausschließlich mit einigen (mehr) Mausklicks zum Ziel. Und vor allen Dingen: Der hier gezeigte Weg ist für Sie kostenfrei (ohne eine Spende) nachzulesen und abzuarbeiten. Für eine kleine Spende (5 Euro) zeige ich Ihnen aber auch in einem getrennten $$-Beitrag einen deutlich effektiveren Weg auf. Mehr dazu am Ende dieser Abhandlung.
Ich habe für Sie eine etwas umfangreichere Datenbasis erstellt, als *.csv gespeichert und Ihnen hier auf unserem Server zum Download bereitgestellt; Hinweis: Unbedingt nur herunterladen und speichern, nicht (direkt) mit Excel öffnen, denn diese *.csv werden Sie gleich in Power Query importieren. Es sind die gleichen 1.000 Namen wie in dem in der einen oder anderen Aufgabe verwendeten File mit den Geburtstagsdaten; hier sind aber die Geburtstage entfernt und 4 weitere Spalten für die Verwendbarkeit in Abteilungen (Skills) hinzugefügt. Hat ein Mitarbeiter die entsprechende Fähigkeit ist in der Spalte ein x eingetragen, sonst ist das Feld leer. Und bitte nicht in Sachen „Kompatibilität” der Aufgaben wundern, ich habe das Zufallsprinzip per Excel „entscheiden” lassen … 😉 Das endgültige Ziel ist, nach den ersten 2 Spalten mit Vorname und Name nur noch 1 weitere Spalte (Skills) zu haben, wo alle Einsatzmöglichkeiten aufgeführt sind, jeweils durch einen Komma mit nachfolgendem Leerzeichen getrennt. Die ersten Zeilen der Lösungstabelle werden sich schlußendlich so darstellen:
Um die Aufgabe gemeinsam mit mir zu erarbeiten öffnen Sie Excel erst einmal mit einem leeren Workbook. Wechseln Sie zum Register Daten und Klicken Sie im Menüband auf das Symbol Aus Text/csv. Wählen Sie im Dialog die eben heruntergeladene Datei und das anfängliche PQ-Dialogfenster stellt sich so dar:
Grundsätzlich ist es nun egal, ob sie eine Option aus der Schaltfläche Laden wählen oder auf Daten transformieren Klicken. Ich ziehe dieses Mal den Weg über Laden vor und wähle die Option Laden in… Im folgenden Dialog wähle ich dann die Möglichkeit, die Daten im bestehenden Arbeitsblatt in der Zelle $A$1 zu speichern:
Die erste Zeile der csv-Datei mit den Überschriften sowie die restlichen Zeilen mit den 1.000 Namen werden nun in das erste Arbeitsblatt an die gewünschte Position geschrieben. Außerdem wird im rechten Seitenfenster automatisch eine Abfrage mit dem Namen 1000_Namen_mit_Skills angelegt. Sie können nun in Excel die automatisch generierten Überschriften der Tabelle (Column1 bis Column7) durch die Inhalte der eigentlichen Überschriften in der jetzigen Zeile 2 ersetzen. Mit einer nicht wirklich transparenten Formel könnten Sie dann (ebenfalls in Plain Excel) die entsprechenden Felder nach einiger Vorarbeit zusammenführen. Aber hier geht es ja um den Einsatz von Power Query und darum belassen Sie es bei dieser ursprünglichen Darstellung und werden die Daten beispielsweise durch einen Doppelklick auf die (einzige) Abfrage im rechten Seitenfenster den PQ-Editor öffnen.
Als erstes es ist natürlich wichtig, die automatisch vergebenen Überschriften durch die Inhalte der ersten Datenzeile (also den eigentlichen Überschriften) zu ersetzen. Dazu wählen Sie im Menüband Erste Zeile als Überschriften verwenden und dieses Ziel ist sofort erreicht.
Das erste Ergebnis meiner folgenden Überlegungen war, die einzelnen Spalten einfach per M-Funktion zu verketten. Okay, dazu habe ich etwas programmiert. Hinweis: Überspringen Sie gerne dieses kleine Experiment, es führt nicht zum gewünschten Erfolg. Aber es ist vielleicht auch lehrreich für Sie! Falls Sie es am eigenen Rechner nachvollziehen wollen: Wechseln Sie zu Spalte hinzufügen | Benutzerdefinierte Spalte und geben Sie bei Neuer Spaltenname den Text Skills ein. Ich habe nun diese Formel entwickelt:
… Und obwohl eindeutig keine Syntaxfehler erkannt worden sind, ist das Ergebnis nicht nur ernüchternd, es ist niederschmetternd. Error, Error, Error … Auch längeres herumexperimentieren auf diesem Niveau hat nicht zum gewünschten Erfolg geführt. Also gilt es, einen anderen Weg zu finden und zu beschreiten. Falls Sie diesem Experiment gefolgt sind: Löschen Sie im rechten Seitenfenster den letzten Angewendeten Schritt und setzen danach an einem prinzipiell ganz anderen Punkt an.
Das (neue) Ziel des ersten Schrittes ist, jedes x durch den Text der Überschrift der entsprechenden Spalte zu ersetzen. Und an dieser Stelle merken Sie schon, dass solch ein Vorgehen bei diesen fünf Spalten noch hinnehmbar ist, bei deutlich mehr Skills ist der Aufwand aus meiner Sicht nicht mehr wirklich tragbar. Markieren Sie also die erste Skill-Spalte Lager und ersetzen Sie auf beliebigen Wege das x mit Lager. Gleiches Vorgehen bei den Spalten Versand, Auslieferung, Verkauf und Teamleitung.
Nun markieren Sie zuerst die Spalte Lager, Shift und dann ein Klick auf die Überschrift Teamleitung. Dadurch sind alle Skill-Spalten markiert. Wechseln Sie zum Menü Transformieren und ein Klick auf Spalten zusammenführen. Wählen Sie dann bei Trennzeichen das Komma und bei Neuer Spaltenname (optional) tragen Sie beispielsweise Skills ein. Nach einem Klick auf OK sieht das ja schon deutlich besser aus als beim ersten Versuch. 😎
Sie werden rasch erkennen, dass auch leere Felder mit übernommen worden sind, was sich durch mehrere direkt aufeinanderfolgende, Kommas/Kommata darstellt. Und in vielen Fällen beginnt oder endet der Zellinhalt mit mindestens einem Komma. Und wenn ein Mitarbeiter derzeit keines der Skills erfüllt, dann sehen Sie wie bei Alain Kuhn (Zeile 25) nur die trennenden Kommas.
Um ausschließlich per Mausklick zum Ziel zu gelangen, gehe ich folgenden Weg:
- Jedes Komma in der Spalte Skills durch ein Leerzeichen ersetzen.
- Transformieren | Format | Kürzen, um die führenden und angehängten Leerzeichen zu entfernen.
- Werte ersetzen | (3 Leerzeichen) durch 1 Leerzeichen ersetzen lassen.
- Werte ersetzen | (2 Leerzeichen) durch 1 Leerzeichen ersetzen lassen; dadurch ist gewährleistet, dass immer nur ein trennendes Leerzeichen gegeben ist.
- Werte ersetzen | (1 Leerzeichen) durch Komma mit 1 angefügten Leerzeichen ersetzen lassen.
- Bei Bedarf können Sie nun noch die Felder ohne Inhalt (hier nicht dargestellt durch null sondern durch keinen Text/leer) durch den Wert (kein Skill) ersetzen lassen; dazu lassen Sie beim ersetzen das obere Feld frei (leer) und tragen in das untere Feld den künftig sichtbaren Wert ein.
- Schließen & laden oder Schließen & laden in… und das Ziel ist erreicht.
Last but not least ein Hinweis: Die Skills für jeden Namen habe ich per Zufallsfunktion verteilt; wenn also einmal die Teamleitung auch für alle anderen Skills einen Eintrag hat, ist er zwar nicht logisch aber denkbar (und meiner Arbeitsersparnis beim erstellen geschuldet).
Ein wichtiger Hinweis
Der Link auf den Folge-Beitrag beginnt mit „$$”. Das bedeutet für alle derartig ausgezeichneten Beiträge, dass diese kostenpflichtig sind (eine geringe Spende).
Näheres dazu in der angesprochenen Mail. Auch Wissen hat einen Wert!
Wie eben schon dargelegt habe ich auch einen weiteren Lösungsweg in bekannter, ausführlicher Form erstellt. Eine E‑Mail an mich mit dem Stichwort/Betreff $$ PQ: Spalten bedingt zusammenführen und Sie bekommen von mir den entsprechenden Link sowie das erforderliche Passwort zum öffnen des Beitrages, sofern Sie mir eine eine Spende von 5,00€ (Überweisung, Donate-Button oder PayPal Freundschaft) haben zukommen lassen. Und versprochen, das geht auch prima mit sehr vielen Skills (und auch mit relativ wenig Aufwand)!