Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Power Query immer Monat 1-12

Forumthread: Power Query immer Monat 1-12

Power Query immer Monat 1-12
16.12.2022 14:21:14
Henry
Hallo liebes Forum,
vielleicht kann mir ja hier jemand helfen.
Ich würde gerne in Power Query für jeden Profit Center immer die Monate 1-12 auflisten.
Die Ursprungswerte sollen natürlich den entsprechenden Monaten zugeordnet werden.
Vielleicht hat jemand einen Rat.
Ich habe mal eine Excel-Datei beigefügt, die die Ausgangslage und das gewünschte Ergebnis recht gut zeigt.
https://www.herber.de/bbs/user/156780.xlsx
Über eure Unterstützung wäre ich sehr dankbar.
LG Henry
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query immer Monat 1-12
16.12.2022 15:27:10
ChrisL
Hi
Bezogen auf diesen Beitrag, habe ich schon eine Lösung. Das Vorgehen aber auf den Ansatz von Luschi umzumünzen, könnte herausfordernd werden. Vielleicht meldet sich Luschi ja noch separat mit einer Lösungsvariante.
https://www.herber.de/forum/archiv/1908to1912/1910841_YTD_in_Power_Query.html
A2:C9 markieren, Menü Daten, Aus Tabelle/Bereich.
Danach in den erweiterten Editor wechseln und den M-Code wie folgt ersetzen:

let
Quelldaten = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
Hilfstabelle1 = Table.FromList(List.Distinct(Quelldaten[Profit Center]), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Hilfstabelle2 = Table.AddColumn(Hilfstabelle1, "Betrag", each 0),
Hilfstabelle3 = Table.AddColumn(Hilfstabelle2, "Monat", each {1..12}),
Hilfstabelle4 = Table.ExpandListColumn(Hilfstabelle3, "Monat"),
Hilfstabelle5 = Table.RenameColumns(Hilfstabelle4, {"Column1", "Profit Center"}),
Quelle = Table.Combine({Quelldaten, Hilfstabelle5}),
#"Gruppierte Zeilen" = Table.Group(Quelle, {"Profit Center", "Monat"}, {{"Betrag", each List.Sum([Betrag]), type number}}),
#"Sortierte Zeilen" = Table.Sort(#"Gruppierte Zeilen",{{"Profit Center", Order.Ascending}, {"Monat", Order.Ascending}}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Sortierte Zeilen",{"Profit Center", "Betrag", "Monat"})
in
#"Neu angeordnete Spalten"
cu
Chris
Anzeige
AW: Power Query immer Monat 1-12
16.12.2022 15:35:32
Henry
Hallo Chris,
ja du hast Recht. Der nächste Schritt wäre tatsächlich die kumulierten Werte zu ermitteln.
Kann ich deinen Schritt nicht einfach vor Luschis Schritte einfügen?
LG Henry
AW: Power Query immer Monat 1-12
16.12.2022 16:16:09
ChrisL
Hi
"Kumulieren" (Auffüllen) kann ich auch noch.

let
Quelldaten = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
Hilfstabelle1 = Table.FromList(List.Distinct(Quelldaten[Profit Center]), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Hilfstabelle2 = Table.AddColumn(Hilfstabelle1, "Betrag", each 0),
Hilfstabelle3 = Table.AddColumn(Hilfstabelle2, "Monat", each {1..12}),
Hilfstabelle4 = Table.ExpandListColumn(Hilfstabelle3, "Monat"),
Hilfstabelle5 = Table.RenameColumns(Hilfstabelle4, {"Column1", "Profit Center"}),
Quelle = Table.Combine({Quelldaten, Hilfstabelle5}),
#"Gruppierte Zeilen" = Table.Group(Quelle, {"Profit Center", "Monat"}, {{"Betrag", each List.Sum([Betrag]), type number}}),
#"Sortierte Zeilen" = Table.Sort(#"Gruppierte Zeilen",{{"Profit Center", Order.Ascending}, {"Monat", Order.Ascending}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Sortierte Zeilen", "BetragNeu", each if [Betrag]0 or [Monat]=1 then [Betrag] else null),
#"Nach unten gefüllt" = Table.FillDown(#"Hinzugefügte benutzerdefinierte Spalte",{"BetragNeu"}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Nach unten gefüllt",{"Betrag"}),
#"Umbenannte Spalten" = Table.RenameColumns(#"Entfernte Spalten",{{"BetragNeu", "Betrag"}}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Umbenannte Spalten",{"Profit Center", "Betrag", "Monat"})
in
#"Neu angeordnete Spalten"
Für mich besteht das Problem darin, dass die Ausgangslagen unterschiedlich/unklar sind. Z.B. wenn die Auswertung über mehrere Jahre gehen kann, dann bekommt die Angelegenheit eine neue Komplexität.
Ich denke man müsste mal einen Schritt zurück machen und die Ausgangslage/-ziel ganz konkret verstehen. Was war nur vereinfacht als Beispiel dargestellt und wie sieht es tatsächlich konkret aus. Verschiedene Themen wurden bereits angesprochen u.a. sind die Quelldaten sortiert oder nicht, dürfen die Daten sortiert werden, hast du mehrere Einträge fürs gleiche PC am gleichen Tag, geht es über mehrere Jahre, ist das Jahr überhaupt relevant, gibt es immer nur ein Eintrag am 1. des Monats (d.h. die Tage sind gar nicht von Relevanz)...
Weiter würde mich interessieren, wie gross die Datenmenge ist (muss auf Performance geachtet werden). Tiefer gegraben, welchen Informationsgehalt willst du überhaupt aus dieser Auswertung ziehen. Ich habe den Verdacht es ginge eigentlich um ein Diagramm oder so und da müsste man vielleicht gar nicht die Rohdaten verbiegen.
Mit den Fragen stochere ich nur mal ein wenig in der Aufgabe rum. Ob ich innert nützlicher Frist noch antworten werde ist fraglich (bin bald mal weg). Ich denke einfach man müsste mal klar sein, welche Aspekte wirklich wichtig sind und wo man Komplexität herausnehmen kann.
Vielleicht wäre es auch besser diesen Beitrag vorerst zu schliessen. Im Moment bist du ja zweigleisig unterwegs und womöglich arbeitet bereits jemand an der Lösung des anderen Beitrags.
cu
Chris
Anzeige
AW: Power Query immer Monat 1-12
16.12.2022 16:49:39
Henry
Hallo Chris,
zu meinem alten Post hat sich leider keine mehr gemeldet.
Eigentlich war das Problem auch gelöst.
Deswegen habe ich einen neuen Thread aufgemacht.
Ich hoffe das war okay.
Ich habe versucht deinen ersten Lösungsweg auf meine echte Tabelle anzuwenden.
https://www.herber.de/bbs/user/156789.xlsx
Leider habe ich das nicht hinbekommen.
Ich habe bereits in Power Query eine Tabelle, die sich ANFVG_IST nennt.
Kannst du mir bitte noch einmal helfen und diese Tabelle so umformen, dass die Monate 1-.12 ausgewiesen werden.
Ich denke, dass der Rest dann klappen sollte.
LG Henry
Anzeige
AW: Power Query immer Monat 1-12
19.12.2022 10:59:51
ChrisL
Hi
Eine letzte Anpassung bekommst du noch von mir. Zum Hinweis von Werner kann man unterschiedliche Betrachtungen einnehmen, aber mir geht es eher darum meine Beiträge "aufzuräumen" bzw. die bereits gemachte (Zeit-)investition zum Erfolg zu bringen. Also reiner Selbstzweck, ohne mütterliche Gefühle ;)
Die Lösung ist sehr statisch und auf die Aufgabe zugeschnitten (immer 1. des Monats, ohne Jahreswechsel, ohne Mehrfacheinträge je Datum usw.). Hauptsächlich habe ich die Einzelschritte angepasst, welche nach dem M-Code Eingriff (Hilfstabelle) kommen. Vielleicht kannst du mal versuchen diese Standardschritte nachzuvollziehen.

let
Quelldaten = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
Hilfstabelle1 = Table.FromList(List.Distinct(Quelldaten[Profit Center]), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Hilfstabelle2 = Table.AddColumn(Hilfstabelle1, "Actual", each 0),
Hilfstabelle3 = Table.AddColumn(Hilfstabelle2, "Month", each {1..12}),
Hilfstabelle4 = Table.ExpandListColumn(Hilfstabelle3, "Month"),
Hilfstabelle5 = Table.RenameColumns(Hilfstabelle4, {"Column1", "Profit Center"}),
Quelle = Table.Combine({Quelldaten, Hilfstabelle5}),
#"Nach unten gefüllt" = Table.FillDown(Quelle,{"Figure", "Year"}),
#"Gruppierte Zeilen" = Table.Group(#"Nach unten gefüllt", {"Figure", "Profit Center", "Month", "Year"}, {{"Betrag", each List.Sum([Actual]), type number}}),
#"Sortierte Zeilen" = Table.Sort(#"Gruppierte Zeilen",{{"Profit Center", Order.Ascending}, {"Month", Order.Ascending}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Sortierte Zeilen", "Actual", each if [Betrag]0 or [Month]=1 then [Betrag] else null),
#"Nach unten gefüllt1" = Table.FillDown(#"Hinzugefügte benutzerdefinierte Spalte",{"Actual"}),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Nach unten gefüllt1", "Date", each #date([Year],[Month],1)),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"Betrag"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Entfernte Spalten",{"Figure", "Profit Center", "Date", "Month", "Year", "Actual"})
in
#"Neu angeordnete Spalten"
cu
Chris
Anzeige
AW: dazu ...
19.12.2022 12:01:28
neopa
Hallo Chris,
... ich kann Deine Haltung durchaus nachvollziehen. Nach dem Lesen von Günthers Beitrag (zu "Henrys" 3. prinzipiell gleichen Fragestellung innerhalb einer Woche) und meiner dort spontan geäußerte Meinung, hatte ich hier im thread deshalb meinen Beitrag auch schon etwas anders formuliert.
Gespannt bin ich nun trotzdem, ob und wie "Henry" sich zu Deiner Hilfe äußert.
Gruß Werner
.. , - ...
Anzeige
;
Anzeige

Infobox / Tutorial

Power Query: Monate 1-12 aus Datum auflisten


Schritt-für-Schritt-Anleitung

Um in Power Query die Monate 1-12 aus einem Datum aufzulisten, befolge die folgenden Schritte:

  1. Daten vorbereiten: Stelle sicher, dass du eine Tabelle in Excel hast, die die Daten enthält, aus denen du die Monate extrahieren möchtest.

  2. Power Query öffnen: Markiere deine Daten und gehe zu Daten > Aus Tabelle/Bereich, um Power Query zu öffnen.

  3. M-Code anpassen: Wechsle in den erweiterten Editor und ersetze den bestehenden Code durch den folgenden M-Code:

    let
       Quelldaten = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
       Hilfstabelle1 = Table.FromList(List.Distinct(Quelldaten[Profit Center]), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
       Hilfstabelle2 = Table.AddColumn(Hilfstabelle1, "Betrag", each 0),
       Hilfstabelle3 = Table.AddColumn(Hilfstabelle2, "Monat", each {1..12}),
       Hilfstabelle4 = Table.ExpandListColumn(Hilfstabelle3, "Monat"),
       Hilfstabelle5 = Table.RenameColumns(Hilfstabelle4, {"Column1", "Profit Center"}),
       Quelle = Table.Combine({Quelldaten, Hilfstabelle5}),
       #"Gruppierte Zeilen" = Table.Group(Quelle, {"Profit Center", "Monat"}, {{"Betrag", each List.Sum([Betrag]), type number}}),
       #"Sortierte Zeilen" = Table.Sort(#"Gruppierte Zeilen",{{"Profit Center", Order.Ascending}, {"Monat", Order.Ascending}}),
       #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Sortierte Zeilen",{"Profit Center", "Betrag", "Monat"})
    in
       #"Neu angeordnete Spalten"
  4. Laden der Daten: Klicke auf Schließen & Laden, um die bearbeiteten Daten zurück nach Excel zu bringen.


Häufige Fehler und Lösungen

  • Problem: Die Monate werden nicht korrekt zugeordnet.

    • Lösung: Überprüfe, ob die Quelldaten korrekt formatiert sind und ob alle erforderlichen Spalten vorhanden sind.
  • Problem: Der M-Code führt zu einem Fehler.

    • Lösung: Stelle sicher, dass du den M-Code genau so eingibst, wie beschrieben. Achte auf die korrekte Syntax und Struktur.

Alternative Methoden

Eine andere Möglichkeit, die Monate aus einem Datum zu extrahieren, besteht darin, eine benutzerdefinierte Spalte zu erstellen, die den Monat direkt aus dem Datum extrahiert. Nutze dazu folgende Schritte:

  1. Benutzerdefinierte Spalte hinzufügen: In Power Query gehe zu Spalte hinzufügen > Benutzerdefinierte Spalte.
  2. Formel eingeben: Verwende die folgende Formel, um den Monat zu extrahieren:
    Date.Month([DeinDatum])

Praktische Beispiele

Wenn du eine Excel-Tabelle mit dem Namen Tabelle1 hast, die die Spalte Profit Center enthält, kannst du die oben genannten Schritte nutzen, um die Monate 1-12 aufzulisten. Hier ein Beispiel:

Profit Center Betrag Monat
A 100 1
A 200 2
B 150 1

Durch den M-Code wird die Tabelle um die Monate erweitert, sodass du für jedes Profit Center die Beträge für alle Monate siehst.


Tipps für Profis

  • Performance: Achte darauf, dass die Datenmenge nicht zu groß ist, da dies die Performance von Power Query beeinträchtigen kann.
  • Kalenderwochen: Wenn du auch die Kalenderwoche aus dem Datum extrahieren möchtest, kannst du den M-Code entsprechend anpassen, indem du eine weitere benutzerdefinierte Spalte hinzufügst:
    Date.WeekOfYear([DeinDatum])

FAQ: Häufige Fragen

1. Wie kann ich die Monate aus einem Datum in Power Query auflisten? Du kannst die Monate mit dem oben beschriebenen M-Code aus deiner Excel-Tabelle extrahieren.

2. Was mache ich, wenn ich mehrere Einträge für das gleiche Datum habe? Du musst sicherstellen, dass du die Daten nach dem Profit Center und dem Monat gruppierst, um die Beträge korrekt zusammenzufassen.

3. Ist es möglich, die Daten auch nach Jahren zu gruppieren? Ja, du kannst eine zusätzliche Spalte für das Jahr hinzufügen und die Gruppierung entsprechend anpassen, um die Daten nach Jahr und Monat zu analysieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige