Excel Power Query – 10 M-Snippets für den Alltag
Du willst Daten in Excel sauber aufbereiten, ohne jedes Mal manuell zu klicken. Genau dabei hilft Power Query mit der Sprache M. Mit wenigen Zeilen Code wandelst du Formate, spaltest oder vereinst Spalten, pivotierst Tabellen, baust Lookups und erzeugst sogar eine Datumstabelle.
Der Vorteil: Deine Schritte sind nachvollziehbar, wiederholbar und lassen sich jederzeit anpassen. In diesem Guide bekommst du 10 praxistaugliche M-Snippets, die du direkt in den Erweiterten Editor kopieren kannst. Ich erkläre kurz wann sie helfen und wie du sie anpasst.
Was ist Power Query M – kurz erklärt
Power Query ist der ETL-Baustein in Excel. Die Sprache M beschreibt jeden Schritt als Ausdruck in let-in-Blöcken. Du arbeitest mit Listen, Tabellen, Records und Funktionen wie Table.TransformColumns oder List.Dates. Wichtig: Jeder Schritt hat einen Namen, auf den der nächste Schritt aufbaut.
Die 10 Snippets für deinen Alltag
1) Datentyp sicher setzen – inklusive Gebietsschema
Warum: Falsche Datentypen machen Berechnungen unzuverlässig.
Was es macht: Setzt Datum, Zahl und Text deterministisch mit Locale.
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
Typen = Table.TransformColumnTypes(
Quelle,
{{"Datum", type date}, {"Betrag", type number}, {"Kunde", type text}},
"de-DE"
)
in
Typen
Tipp: Das dritte Argument „de-DE“ sorgt dafür, dass z. B. 31.12.2025 korrekt erkannt wird.
2) Texte säubern – Leerzeichen, Steuerzeichen, Großschreibung
Warum: Inkonsistente Texte verhindern Joins.
Was es macht: Trimmt, säubert und normiert Groß/Klein.
let
Quelle = #"Vorheriger Schritt",
Clean = Table.TransformColumns(
Quelle,
{{"Name", each Text.Proper(Text.Trim(Text.Clean(_))), type text}}
)
in
Clean
Ergebnis: “ mÜLLER GmbH „ wird zu „Müller GmbH“.
3) Spalten splitten und später wieder vereinen
Warum: Du willst Vor- und Nachnamen getrennt, später aber wieder als Anzeige zusammen.
Was es macht: Split am Leerzeichen, Combine mit Trennzeichen.
let
Quelle = #"Vorheriger Schritt",
Split = Table.SplitColumn(Quelle, "Kontakt", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Vorname","Nachname"}),
Join = Table.CombineColumns(Split, {"Vorname","Nachname"}, Combiner.CombineTextByDelimiter(" ", QuoteStyle.None), "Kontakt_Anzeige")
in
Join
4) Unpivot – aus Spalten werden Zeilen
Warum: Monatsspalten machen Auswertungen schwer.
Was es macht: Entpivottiert alle außer den ID-Spalten.
let
Quelle = #"Vorheriger Schritt",
Unpivot = Table.UnpivotOtherColumns(Quelle, {"Artikel","Kategorie"}, "Monat", "Umsatz")
in
Unpivot
Ergebnis: Spalten Jan, Feb, Mrz werden zu Zeilen in Monat mit Wert Umsatz.
5) Pivot mit Aggregation
Warum: Du willst aus Zeilen wieder Spalten erzeugen, z. B. Kategorie pro Jahr.
Was es macht: Pivot mit Summe als Aggregation.
let
Quelle = #"Vorheriger Schritt",
Pivot = Table.Pivot(Quelle, List.Distinct(Quelle[Kategorie]), "Kategorie", "Umsatz", List.Sum)
in
Pivot
6) Lookup zwischen Tabellen – Join und Expand
Warum: Du brauchst Attribute aus einer Stammtabelle.
Was es macht: Left Join über ID und Expand der gewünschten Felder.
let
A = #"Faktentabelle",
B = #"Stammdaten",
Join = Table.NestedJoin(A, {"KundenID"}, B, {"KundenID"}, "Stamm", JoinKind.LeftOuter),
Expand= Table.ExpandTableColumn(Join, "Stamm", {"Kundenname","Region"}, {"Kundenname","Region"})
in
Expand
Hinweis: Vorher Spalten säubern und Datentyp angleichen, sonst schlagen Joins fehl.
7) Teilmengen schnell machen – partieller Filterindex
Warum: Du brauchst oft nur aktive Datensätze.
Was es macht: Filtert auf Status und entfernt Fehlerzeilen.
let
Quelle = #"Vorheriger Schritt",
Aktiv = Table.SelectRows(Quelle, each [Status] = "aktiv"),
FehlerFrei= Table.RemoveRowsWithErrors(Aktiv)
in
FehlerFrei
8) Fehlende Werte füllen und Standard setzen
Warum: Lücken brechen Berechnungen.
Was es macht: Fill Down und Nulls ersetzen.
let
Quelle = #"Vorheriger Schritt",
FillDown = Table.FillDown(Quelle, {"Kategorie"}),
Ersetzen = Table.ReplaceValue(FillDown, null, 0, Replacer.ReplaceValue, {"Menge","Umsatz"})
in
Ersetzen
9) Datumstabelle generieren – Jahr, Monat, Quartal
Warum: Zeitfunktionen brauchen eine saubere Datumstabelle.
Was es macht: Baut Liste von Daten, wandelt in Tabelle, fügt Jahr/Monat/Quartal hinzu.
let
Start = #date(2023,1,1),
Ende = #date(2025,12,31),
Liste = List.Dates(Start, Duration.Days(Ende-Start)+1, #duration(1,0,0,0)),
Tabelle= Table.FromList(Liste, Splitter.SplitByNothing(), {"Datum"}),
MitTyp = Table.TransformColumnTypes(Tabelle, {{"Datum", type date}}),
Jahr = Table.AddColumn(MitTyp, "Jahr", each Date.Year([Datum]), Int64.Type),
MonatN = Table.AddColumn(Jahr, "MonatNr", each Date.Month([Datum]), Int64.Type),
Monat = Table.AddColumn(MonatN, "Monat", each Date.ToText([Datum], "yyyy-MM")),
Quart = Table.AddColumn(Monat, "Quartal", each "Q" & Number.ToText(Date.QuarterOfYear([Datum])))
in
Quart
10) Robuste Fehlerbehandlung – try otherwise
Warum: Eingabedaten sind selten perfekt.
Was es macht: Wandelt sicher und setzt Fallback statt Fehlermeldung.
let
Quelle = #"Vorheriger Schritt",
SafeToNumber = Table.AddColumn(
Quelle,
"Betrag_num",
each try Number.FromText([Betrag]) otherwise 0,
type number
)
in
SafeToNumber
Ergebnis: Unlesbare Beträge führen nicht mehr zum Abbruch, sondern zu 0 oder deinem Wunschwert.
Best Practices für Einsteiger
Halte Schrittnamen sprechend, setze Datentypen früh, säubere Texte vor Joins und dokumentiere kurz warum ein Schritt existiert. Wenn möglich, arbeite gegen Tabellen aus dem Data Source statt gegen berechnete Zwischenschritte, das erhöht die Chance auf Query Folding und macht Abfragen schneller.
Fazit
Mit diesen 10 Power Query M Snippets erledigst du 80 Prozent der täglichen Datenvorbereitung: Typen setzen, Texte säubern, Spalten formen, Pivot/Unpivot, Lookups, Datumstabellen und Fehlerbehandlung. Du bekommst robuste, wiederholbare Pipelines direkt in Excel. Starte mit einem Snippet, passe es an deine Spalten an und baue Schritt für Schritt deinen Werkzeugkasten aus.
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!