Vor längerer Zeit habe ich in einem Artikel die in Microsoft 365 integrierten Datentypen, wie Aktien, Geografie oder Währung vorgestellt. Damit erhält man gewissermaßen intelligente Zellen, zu deren Inhalten man weitere Informationen abrufen kann, wie beispielsweise Aktienkurse oder Bevölkerungszahlen.
Noch weniger bekannt hingegen ist die Möglichkeit, völlig eigene Datentypen zu definieren.
Alles, was man dazu braucht, ist Excel aus Microsoft 365 und Power Query.
Wie das funktioniert, zeige ich dir in diesem Beitrag.
Falls du den Artikel zu den eingebauten Datentypen in M365 verpasst hast, kannst du ihn hier gerne nachlesen. Mittlerweile hat sich zwar die Anzahl der verfügbaren Datentypen stark reduziert, so dass heute nicht mehr alle der im Artikel beschriebenen Typen zur Verfügung stehen. Aber das Grundprinzip gilt nach wie vor.
Einen eigenen Datentyp erstellen
Als Beispiel verwende ich einen kleinen Artikelstamm, der aus der Northwind-Musterdatenbank von Microsoft stammt.
Bei diesem Artikel handelt es sich um einen zeitlosen Klassiker, der ursprünglich im September 2022 erschien. Ich habe den Inhalt vor der Neuveröffentlichung noch einmal überprüft und an der einen oder anderen Stelle leicht angepasst.
Die Daten habe ich als formatierte Tabelle angelegt und dafür den Namen „tblProdukte“ vergeben:
Als nächstes wird die Tabelle nach Power Query geladen: Menü „Daten | Aus Tabelle/Bereich“:
Im Power Query-Editor ist dann die komplette Artikeltabelle zu sehen. In der Grundeinstellung legt Power Query in einem eigenen Schritt die Datentypen für alle Spalten fest. Es empfiehlt sich immer, diese Automatik zu kontrollieren und ggf. die Typen anzupassen. In meinem Beispiel wurden aber alle Spalten korrekt zugeordnet.
Kommen wir nun zum eigentlichen Punkt: die Erstellung eines benutzerdefinierten Datentyps.
Ja, das klingt jetzt vielleicht gerade etwas verwirrend mit den ganzen Datentypen. Denn jeder Power Query-Anwender weiß, dass man einer jeden Spalte einen sogenannten Datentyp zuweisen sollte (Text, Dezimalzahl, Währung, Ganze Zahl, Datum und so weiter).
Mit den Datentypen, um die es heute geht, hat das aber nichts zu tun. Denn bei denen wird nämlich ein Hauptfeld oder eine Hauptspalte festlegt, hinter der sich dann beliebig viele weitere Unterfelder verbergen können. Du wirst gleich verstehen, was damit gemeint ist.
Dieses Hauptfeld soll in unserem Fall die Artikelnummer sein, daher muss die betreffende Spalte „Artikel-Nr.“ markiert werden. Im Menü „Transformieren“ findet sich dann am ganz rechten Rand die Schaltfläche „Datentyp erstellen“:
Nach einem Klick darauf öffnet sich ein weiteres Fenster. Hier ändern wir zuerst den Datentypnamen in „Produkt“ und wählen dann die Option „Weitere“:
Dadurch erscheint um unteren Fenster die Liste aller Felder unserer Artikeltabelle. Wir wollen nur bestimmte Spalten in unseren Datentyp aufnehmen und markieren dort deshalb bei gedrückter Strg-Taste die ersten 5 Felder und übertragen diese mit einem Klick auf „Hinzufügen“ in die rechte Liste:
Anschließend wird das Datentypfenster mit OK wieder geschlossen. Die Datentabelle hat sich nun verändert:
Neben der Artikelnummer sind nur noch die Spalten zu sehen, die wir nicht in den Datentyp übernommen haben. Und die Artikelnummer heißt nun „Produkte“ und hat außerdem ein neues Symbol erhalten. Dieses zeigt an, dass es sich hier um eine Datentyp-Spalte handelt:
Als nächstes werden die nicht benötigten Spalten „Lagerbestand“, „Bestellte Einheiten“, „Mindestbestand“ und „Auslaufartikel“ entfernt, so dass nur noch die „Produkte“-Spalte übrig bleibt. Und damit sind alle Vorarbeiten abgeschlossen, so dass wir den Power Query-Editor über das Menü „Start | Schließen & Laden“ wieder verlassen können:
In Excel wird die Produkteliste in ein neues Arbeitsblatt geladen, wo man an dem vorangestellten Symbol vor der Artikelnummer schon erkennen kann, dass es sich hierbei um einen Datentyp handelt. Wenn man nun bei einem beliebigen Produkt auf dieses Symbol klickt, wird eine Karte mit allen Details für diesen Artikel eingeblendet:
Nicht schlecht, oder?
Arbeiten mit dem neuen Datentyp
Wie du sicherlich schon vermutet hast, lassen sich die einzelnen Informationen natürlich auch gezielt wieder in die Tabelle übernehmen. Wenn man auf das kleine Symbol in der rechten oberen Ecke der Artikeltabelle klickt, erhält man die Liste alle enthaltenen Datenfelder und kann dort bequem das gewünschte auswählen. Die betreffende Information wird sofort für alle Artikel in der Tabelle übernommen:
Alternativ kann ich auch in eine beliebige leere Zelle neben der Artikelliste ein Gleichheitszeichen eintippen und auf die Artikelnummer in der Produktespalte klicken. Dadurch wird mir wieder die Liste aller Datentypfelder angezeigt, aus der ich den gewünschten mit einem Doppelklick übernehmen kann. Und wer auf die Maus verzichten möchte, kann einfach einen Punkt nach dem Produkt eingeben und den Namen der gewünschten Spalte eintippen und mit der Tabulatortaste übernehmen:
Aber es kommt noch viel besser!
Oder hast du den Einstieg schon hinter dir und möchtest jetzt das nächste Level erklimmen? Dann schau dir meinen Fortgeschrittenen-Kurs „Power Query-Praxisfälle“ an!
Filtern nach ausgeblendeten Attributen
Sehr interessant ist die Möglichkeit, die Produktetabelle nach bestimmten Attributen zu filtern, obwohl diese gar nicht sichtbar sind. Ich lösche dazu nochmal alle zuvor eingefügten Spalten, so dass nur die Produkte-Spalte angezeigt wird.
Nun sollen nur solche Produkte ausgegeben werden, die zu der Kategorie gehören, welche in Zelle D1 eingeben wird:
In Zelle F2 kommt nun die folgende Formel:
=FILTER(tblProdukte_2[Produkte];tblProdukte_2[Produkte].Kategorie=D1)
Bei der Eingabe kann ich mir selbstverständlich wieder durch Klicken mit der Maus helfen lassen:
Da es sich bei FILTER um eine der neuen dynamischen Arrayfunktionen handelt, verändert sich der Ausgabebereich dynamisch und wird somit automatisch länger oder kürzer, je nachdem, wie viele Produkte eben in der Kategorie vorhanden sind. Und wie man an dem Symbol sieht, handelt es sich auch bei der gefilterten Liste wieder um Datentypen.
Treiben wir das Ganze noch ein wenig weiter und lassen daneben die Artikelnamen ausgeben. Damit sich auch diese dynamisch an die Länge der Produkteliste anpasst, muss hinter den Zellenbezug F2 das #-Symbol eingegeben werden:
=F2#.Artikelname
Dieses Raute-Symbol ist der sogenannte Überlaufoperator. Das bedeutet, dass es sich bei der angegebenen Zelle um ein dynamisches Array handelt, und nicht nur um eine einzelne Zelle:
Ziemlich genial, wie ich finde.
Das soll es für heute gewesen sein, auch wenn es zu diesem Thema sicherlich noch einiges zu erzählen gäbe. Mehr dazu vielleicht ein anderes mal.
Du hast sicherlich schon ein paar Ideen, wie du diese Datentypen nutzen kannst, oder? Falls ja, lass es uns in den Kommentaren wissen.

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)
P.P.S. Das Problem sitzt meistens vor dem Computer.



















Hallo Martin.
Vielen Dank, für diese verständlichen Informationen zu der tatsächlich echt coolen Anwendungsmöglichkeit von Datentypen.
Achja und überhaupt zu den Themen Power Query und Power Pivot, die ich nun immer mehr in der Praxis verwende.
Diesen Artikel habe ich zum Anlass genommen, um Datentypen in einem aktuellen Projekt einzubauen und stelle mir die Frage, ob und wenn ja, wie ich gleich mehrere Kategorien filtern kann.
Aktuell lautet meine Formel:
=FILTER(DB_Prozesse_2;DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP1]=K1)
Das bei mir die eckigen Klammern auch bei der Auswahl der Spalte dran stehen, liegt vermutlich an einem zuvor durchgeführten join von zwei Tabellen über Power Query. Wenn ich eine Spalte Abfrage, die sich in der anderen Tabelle befand, stehen die Klammern nicht da.
Aber meine eigentliche Frage:
Ich möchte hier filtern, in welchen Prozessen der Tabelle ein bestimmter Teilprozess (TP) vorkommt. Diese können in den Spalten DB_Teilprozesse.bet-TP1 – 15 liegen. Zurzeit kann ich nur etwas finden, wenn es sich um den ersten Teilprozess handelt.
Das klassische [[Spalte]:[Spalte]] hat hier nicht geklappt.
Vielleicht kannst du mir helfen?
Vielen Dank und weiter so 🙂
Hallo Sebastian,
vielen Dank für das schöne Feedback und freut es mich natürlich, dass du die Datentypen gleich mal bei dir einsetzt! Nun zu deiner Frage zur FILTER-Funktion.
Wenn ich es richtig verstehe, dann kann der Teilprozess also in verschiedenen Spalten vorkommen, was also einer ODER-Bedingung entspricht (Teilprozess enthalten in Spalte1 oder Spalte2 oder in Spalte3…)
Das lässt sich in der FILTER-Funktion ohne Probleme abbilden.
Mehrere ODER-Kriterien werden dabei in Klammern gesetzt und über das Pluszeichen verbunden, bei deinem Beispiel also
=FILTER(DB_Prozesse_2;(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP1]=K1)+(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP2]=K1)+(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP3]=K1))
Brauchst du hingegen eine UND-Bedingung (das Kriterium muss also gleichzeitig in drei Spalten enthalten sein), dann verwendest du eine Multiplikation:
=FILTER(DB_Prozesse_2;(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP1]=K1)*(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP2]=K1)*(DB_Prozesse_2[Prozess].[DB_Teilprozesse.bet-TP3]=K1))
Ich hoffe, das hilft dir weiter.
Schöne Grüße,
Martin
Hallo.
Vielen Dank, das hilft weiter.
Den Unterschied zwischen UND und ODER mit * bzw. + war mir noch gar nicht bewusst, vermutlich, weil es bisher immer nur UND-Bedingungen waren die ich benötigt habe 😉
Danke+Gruß
Sebastian
Hallo Sebastian,
gern geschehen, man lernt nie aus 🙂
Schöne Grüße,
Martin