PQ: Zuordnung Kunde – Postleitzahlbereich (PLZ, ZIP-Code) – Mitarbeiter

Xtract: Kun­den sollen auf­grund der PLZ einem betreuen­den Mitar­beit­er zuge­ord­net wer­den. Die PLZ liegen dabei sehr sel­ten einzeln son­dern meist in Num­mern­blöck­en „von … bis” vor. Per Pow­er Query wer­den die PLZ-Blöcke in die einzel­nen PLZ ges­plit­tet.

  Wis­sens­stand: Lev­el 2 ⇒ Solides Basiswis­sen in Excel, etwas Erfahrung in PQ   

Einen Kunden aufgrund Postleitzahlbereich dem zugehörigen Mitarbeiter zuordnen

In den unter­schiedlichen Excel-Foren wird immer wieder ein­mal die Frage gestellt, wie ein Kunde auf­grund der Postleitzahl dem entsprechen­den Mitar­beit­er zuge­ord­net wer­den kann. Das gle­iche Prinzip kann auch angewen­det wer­den, wenn beispiel­sweise Kom­munen einem Land­kreis oder Bun­des­land zuge­ord­net wer­den sollen. Der Schlüs­sel­be­griff ist dabei immer die Postleitzahl, die im gewis­sen Rah­men ein­deutig ist. „Im gewis­sen Rah­men“, weil in manchen Fällen die PLZ ja auch für mehrere Orte mit unter­schiedlichen Namen vergeben wer­den kann. Allerd­ings gilt, dass eine bes­timmte PLZ immer einem definierten Mitar­beit­er zuge­ord­net wird.

In dieser Mus­ter­datei sind mehrere hun­dert Kun­den erfasst. Zu jedem Kun­den gibt es naturgemäß eine ein­deutige Postleitzahl. In ein­er weit­eren Tabelle sind die PLZ-Bere­iche (die auch schon ein­mal aus ein­er einzel­nen PLZ beste­hen kön­nen) erfasst und in der Nebenspalte wird der entsprechende Mitar­beit­er, welch­er für diesen PLZ-Bere­ich zuständig ist, aus­gewiesen. Im Tabel­len­blatt Kun­den­zuweisung soll nun jedem Kun­den der entsprechende Mitar­beit­er zuge­ord­net wer­den.

Ich räume ein, dass die Zuord­nung kein­er wirk­lichen Logik entspricht. Ich habe die Postleitzahl bzw. Postleitzahlbere­iche nach dem Zufall­sprinzip sortiert und die Spal­ten dann nebeneinan­der ange­ord­net. In der vor-PQ-Zeit wurde solch ein Prob­lem gewiss mit ein­er Daten­bank oder über den Weg der Pro­gram­mierung mit VBA gelöst. Dank Pow­er Query ist das aber recht gut ohne Pro­gram­mierung mit eini­gen Funk­tio­nen der Sprache M lös­bar.

▲ nach oben …

Postleitzahlen-Bereiche „auseinzeln”

Aktivieren Sie zu Beginn das Arbeits­blatt PLZ Bere­iche. Und da diese Auflis­tung noch nicht als Intel­li­gente Tabelle vor­liegt, for­matieren sie die Dat­en entsprechend.  Ide­al­er­weise vergeben sie schon hier einen „sprechen­den“ Namen, beispiel­sweise PLZ_Bereiche. Der Vorteil dabei ist, dass dieser Tabel­len­name nach dem Import in den Pow­er Query-Edi­tor automa­tisch auch als Name für die Abfrage ver­wen­det wird. Anschließend importieren sie die Tabelle. ¿ Der Dat­en-Bere­ich stellt sich nun so dar:

Die Abfrage direkt nach dem Import

Zwei Dinge wer­den (soll­ten) Ihnen auf­fall­en: In der Spalte Name ist die numerische Beze­ich­nung des Mitar­beit­ers nicht sicht­bar und in den bei­den PLZ-Spal­ten sind die ersten 16 Zeilen nur vier­stel­lig, also ohne die führende Null. Das mit dem Namen ist recht sim­pel zu organ­isieren: Ziehen Sie die Spalte etwas bre­it­er und schon ist die Num­mer des Mitar­beit­ers klar erkennbar. Bei den Spal­ten mit den Postleitzahlen sollte Ihnen klar sein, dass Pow­er Query hier eine Typumwand­lung vorgenom­men hat was Sie auch erken­nen, wenn Sie eine oder bei­de Spal­ten markieren und dann einen Blick in das Menüband, Gruppe Trans­formieren auf den Ein­trag Daten­typ: wer­fen. Da die führende Null wegen der 5‑stelligen PLZ in Deutsch­land ja zwin­gend erforder­lich ist, markieren Sie jet­zt diese bei­den Spal­ten und ändern Sie den Daten­typ auf Text.

Und wie Sie sehen, sehen Sie nichts. Zu min­destens was eine Änderung der Darstel­lung bet­rifft. Ich gebe zu, dass die Ursachen­forschung auf der einen Seite gar nicht ein­mal so leicht, die eigentliche Ursache jedoch prinzip­iell ganz banal ist. Ich schlage ihnen vor, bere­its an dieser Stelle ein­mal auf das Erweit­ern-Sym­bol bei Schließen & laden zu Klick­en, Schließen & laden in… auszuwählen und dann Nur Verbindung erstellen zu markieren. Die Abfrage wird geschlossen und sie befind­en sich wieder im Excel-Arbeits­blatt. Klick­en Sie nun in beispiel­sweise A2 und schauen Sie sich dann den Wert in der Eingabezeile an… Und sie wer­den erken­nen, dass hier bei der Dateneingabe ein­fach gep­fuscht wor­den ist (ja ich habe es extra so gemacht). 😉 Damit wäre die Ursache gek­lärt.

Prinzip­iell gibt es nun natür­lich 2 Wege, dieses Prob­lem zu beseit­i­gen. Sie kön­nen die Excel-Tabelle anpassen, damit dort auch beim Zeilen­for­mat Text eine führende Null gegeben ist oder sie lassen Pow­er Query die Arbeit erledi­gen. Auch wenn es den Anschein hat dass es in diesem Fall deut­lich ein­fach­er wäre, den Weg über Plain Excel zu beschre­it­en, soll­ten Sie nicht nur des Lern­ef­fek­ts wegen das Prob­lem per PQ lösen. Es ist prinzip­iell sog­ar erforder­lich, wie Sie auch gle­ich erken­nen wer­den.

Löschen Sie im recht­en Seit­en­fen­ster des PQ-Edi­tors bei Angewen­dete Schritte die zweite, also die let­zte Zeile. Sie erken­nen, dass jet­zt nur noch der Ein­trag Quelle existiert. Wenn Sie nun den Daten­typ der einzel­nen Spal­ten über­prüfen wer­den sie erken­nen, dass es durchge­hend Beliebig ist.

Im näch­sten Schritt sollen die PLZ-Bere­iche so erweit­ert wer­den, dass jede der Postleitzahlen im angegebe­nen Bere­ich in ein­er einzel­nen Zeile aufge­führt, also expandiert wird. Und natür­lich soll neben jed­er einzel­nen PLZ auch der Name des Mitar­beit­ers bzw. der Mitar­bei­t­erin angezeigt wer­den. Um das zu erre­ichen wech­seln Sie zum Menü Spalte hinzufü­gen und wählen dort im Menüband das Sym­bol Benutzerdefinierte Spalte. Im Dia­log geben Sie bei Neuer Spal­tenname beispiel­sweise PLZ ein und in das große Feld Benutzerdefinierte Spal­tenformel diese Formel:
= {[PLZ von]..[PLZ bis]}
Die Spal­tenüber­schriften übernehmen Sie dabei am besten per Dop­pelk­lick auf die entsprechende Posi­tion im recht­en Kas­ten.

Nach einem OK wer­den Sie sehen, dass Pow­er Query eine neue Spalte gener­iert hat. In jed­er einzel­nen Zeile dieser Spalte ste­ht der Ein­trag List, der engliche Begriff für Liste. Und wer­fen Sie nun ein­mal einen Blick in die Sta­tuszeile unten links. Dort ste­ht, dass diese Abfrage 4 Spal­ten und 493 Zeilen hat. Erweit­ern Sie die einzel­nen Zellen durch einen Klick auf den Dop­pelpfeil Doppelpfeil in der Über­schrift und anschließend Auf neue Zeilen ausweit­en. Sie wer­den rasch erken­nen, dass nun für jede einzelne PLZ des entsprechen­den Bere­ichs eine einzelne Zeile erstellt wor­den ist und alle anderen Spal­ten-Ein­träge per Dup­likat mit über­nom­men wur­den. Und ein Blick in die Sta­tuszeile ist der endgültige Beweis…

Löschen Sie nun noch die bei­den Spal­ten PLZ von und PLZ bis und diese Query ist im gewün­scht­en Sta­tus. Darum Schließen & laden und Sie gelan­gen wieder in das Excel-Arbeits­baltt. Im recht­en Seit­en­fen­ster des Arbeits­blatts erken­nen Sie, dass 1 Abfrage existiert und unter­halb des Namens sehen Sie auch, dass die stolze Anzahl von 98.767 Zeilen geladen wor­den ist.

▲ nach oben …

Erklärung zu {..}

Eine kurze Erk­lärung zu der Formel bin ich Ihnen gewiss noch schuldig. Die bei­den Über­schriften in den eck­i­gen Klam­mern soll­ten ins­beson­dere im Hin­blick auf die „sprechen­den” Über­schriften selb­sterk­lärend sein. Die zwei direkt aufeinan­der­fol­gen­den Punk­te .. sind hier das Syn­onym für „bis”. Durch die ein­fassenden geschweiften Klam­mern wird aus dem Auswer­tungsergeb­nis eine Liste gener­iert. Das wird ja auch dadurch deut­lich, dass als Ergeb­nis in jedem Feld der Begriff List ste­ht. Damit das Ganze aber funk­tion­iert, müssen die Felder der Zeile einen numerischen Wert enthal­ten, welch­er von Startwert bis Endw­ert jew­eils um den Wert 1 inkre­men­tiert wird. Ein Daten­for­mat wie beispiel­sweise Text würde naturgemäß zu einem Fehler führen.

▲ nach oben …

Kunden den Mitarbeitern zuweisen

Wech­seln Sie nun zum Arbeits­blatt Kun­den­zuweisung. Wie schon aus den Spal­tenna­men ersichtlich geht es darum, jedem Kun­den anhand der Postleitzahl den zuständi­gen Mitar­beit­er zuzuweisen. Und da jet­zt ja schon eine Liste (Abfrage) aller denkbaren Postleitzahlen existiert, kön­nten sie the­o­retis­ch­er Weise auch mit einem SVERWEIS() die Spalte C füllen. Aber wenn sie schon Pow­er Query nutzen, dann soll­ten Sie diese Funk­tion­al­ität auch hier ein­set­zen. Übri­gens würde das unter diesen Umstän­den sowieso nicht funk­tion­ieren, da die Abfrage ja nur als Verbindung und nicht als physis­che Tabell in einem Arbeits­blatt existiert. Also Klick­en Sie irgend­wo in die Spal­ten A|B und importieren Sie diese Tabelle in den Pow­er Query-Edi­tor.

Das Grund­prinzip bzw. eine detail­lierte Beschrei­bung des PQ-Ersatzes für den SVERWEIS() kön­nen Sie hier in unserem Blog oder auch hier nach­le­sen. Darum werde ich an dieser Stelle die einzel­nen Schritte nur kurz beschreiben. Nach dem Import sollte Ihnen aufge­fall­en sein, dass die Spalte PLZ automa­tisch in den Daten­typ:  Ganze Zahl umge­wan­delt wor­den ist. Wäre das nicht der Fall gewe­sen müssten sie diesen Schritt von Hand durch­führen, denn wie auch beim SVERWEIS() in Excel kön­nen nicht Zahlen und Texte „sauber” ver­glichen wer­den.

Erweit­ern Sie im Menü Start Gruppe Kom­binieren das Sym­bol Abfra­gen zusam­men­führen und wählen Sie im Drop­Down Abfra­gen zusam­men­führen. Wählen Sie dann im kleinen, mit­tleren Textfeld die Abfrage PLZ_Bereiche und im unteren großen Kas­ten wer­den sofort die ersten Daten­sätze dieser Abfrage angezeigt:

Zusam­men­fü­gen der Dat­en, um die Mitar­beit­er zu ver­linken

Markieren Sie in bei­den Abfra­gen (im oberen und unteren Kas­ten) die Spalte PLZ, belassen sie Join-Art bei der vorgegebe­nen Ein­stel­lung und OK. Automa­tisch wurde eine neue Spalte PLZ_Bereiche erstellt und der Inhalt jed­er einzel­nen Zelle der 970 Zeilen ist Table. Erweit­ern Sie die Über­schrift durch einen Klick auf den Dop­pelpfeil Doppelpfeil und ent­fer­nen Sie im Dia­log alle Häkchen mit Aus­nahme der Zeile Name. Denken Sie auch daran, das Häkchen bei Ursprünglichen Spal­tenna­men als Prä­fix ver­wen­den zu ent­fer­nen. Und nach einem Klick auf OK sind ruck­zuck alle Mitar­beit­er-Namen einge­tra­gen und die Spalte hat auch automa­tisch die Über­schrift Name bekom­men; bei Bedarf kön­nen Sie diese natür­lich Ihren Wün­schen gemäß anpassen. Schließen & laden oder Schließen und laden in… und die Dat­en wer­den entwed­er in ein neues Tabel­len­blatt oder an Ihrer Wun­sch­po­si­tion gespe­ichert.

Das war’s auch schon. Die Auf­gabe ist gelöst. Mit ein­er einzi­gen und aus mein­er Sicht auch recht über­schaubaren Formel haben Sie die die Auf­gabe gelöst. – Oder doch nicht? Da war doch noch was…

Richtg, die PLZ müssen ja alle 5‑stellig sein und nicht teil­weise (nur) 4‑stellig. Wech­seln Sie dazu in das Menü Spalte hinzufü­gen | Benutzerdefinierte Spalte und vergeben als Neuer Spal­tenneme beispiel­sweise PLZ. (also mit einem ange­hängten Punkt, da in ein­er Abfrage keine Über­schriften mehrfach vorkom­men kön­nen). Als Formel geben Sie ein:
= Number.ToText([PLZ], "00000")
und umge­hend wird die neue PLZ-Spalte wun­schgemäß for­matiert. Dass der Daten­typ hier Beliebig ist, spielt prinzip­iell keine Rolle. Sie kön­nen ihn aber der des Prinzips wegen auf Text ändern. Ich lösche nun noch die (alte) Spalte PLZ, ver­schiebe PLZ. an die Posi­tion 2 und ändere den Namen der Über­schrift wieder auf PLZ (ohne Punkt). Noch ein­mal Schließen & laden und Sie kön­nen das Ergeb­nis zufrieden betra­cht­en. 😎 

▲ nach oben …

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 3,00  freuen …

Dieser Beitrag wurde unter Daten zusammenführen, Datentyp anpassen, Foren-Q&A, Formatierung, Power Query, PQ-Formeln (Sprache M), Rechnen & Zahlen, Text-Behandlung, {Liste} abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.