Quelle: https://www.herber.de/cgi-bin/eachthread.pl?idx=1989200
Stand: 26.08.2024 21:45
Hier der Eröffnungsbeitrag aus dem Herber-Forum:
Hallo,
ich habe eine Tabelle mit Beginn‑, Endedatum und Namen eines Kursteilnehmers.
Beispiel:
01.04.2024 / 30.09.2024 / Kurt
01.03.2024 / 25.07.2024 / Martin
06.05.2024 / 30.11.2024 / Uwe
…
Aus dieser Tabelle möchte ich eine Privattabelle mit Anzahl der Teilnehmer pro Monat.
Danke!
Gruß
Diddlone
Prinzipiell ist das aus meiner Sicht ein Klassiker für den Einsatz von Power Query. In diesem Fall war keine Musterdatei beigefügt, ich habe die 3 Muster-Zeilen per copy/paste in ein leeres Arbeitsblatt eingefügt und anschließend in der Form als Import-Basis verwendet. – Und natürlich kann das Ergebnis auch als PivotTable ausgegeben werden… 😉
Meine Interpretation der Fragestellung: Auch wenn ein Teilnehmer nur 1 Tag in einem Monat anwesend bzw. gebucht war, wird er oder sie dem Monat zugerechnet.
Da die Muster-Daten sich alle in einem Kalenderjahr „abspielen“, habe ich auch auf die Berücksichtigung eines eventuellen Jahreswechsels verzichtet. Selbstredend ist eine jahresübergreifende Auswertung auch möglich, wenn beispielsweise das Geschäftsjahr eines Unternehmens nicht mit dem Kalenderjahr übereinstimmt.
Hier nun der entsprechende M-Code:
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], //Erforderlichenfalls anpassen #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Spalte1", type text}}), // Erforderlich, weil per copy/paste in ein leeres Tabellenblatt eingefügt #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Geänderter Typ", "Spalte1", Splitter.SplitTextByDelimiter(" / ", QuoteStyle.csv), {"Spalte1.1", "Spalte1.2", "Spalte1.3"}), // … war ja Text #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Spalte1.1", type date}, {"Spalte1.2", type date}}), #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ1", "Datum", each List.Dates([Spalte1.1], Duration.Days([Spalte1.2]-[Spalte1.1])+1, #duration(1,0,0,0))), #"Erweiterte Datum" = Table.ExpandListColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Datum"), // In erster Linie, damit am Schluß die Sortierung korrekt ist #"Monat eingefügt" = Table.AddColumn(#"Erweiterte Datum", "Monat", each Date.Month([Datum]), Int64.Type), // Muß nicht sein, aber hilft uns Anwendern in Sachen Lögik #"Name des Monats eingefügt" = Table.AddColumn(#"Monat eingefügt", "Monatsname", each Date.MonthName([Datum]), type text), #"Andere entfernte Spalten" = Table.SelectColumns(#"Name des Monats eingefügt",{"Spalte1.3", "Monatsname", "Monat"}), #"Entfernte Duplikate" = Table.Distinct(#"Andere entfernte Spalten"), #"Sortierte Zeilen" = Table.Sort(#"Entfernte Duplikate",{{"Monat", Order.Ascending}}), // Der März ist ein Ausreißer #"Gruppierte Zeilen" = Table.Group(#"Sortierte Zeilen", {"Monatsname"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}, {"#Monat", each List.Max([Monat]), type number}}), #"Sortierte Zeilen1" = Table.Sort(#"Gruppierte Zeilen",{{"#Monat", Order.Ascending}}), #"Entfernte Spalten" = Table.RemoveColumns(#"Sortierte Zeilen1",{"#Monat"}) in #"Entfernte Spalten"
Und hier, beim Stichwort last but not least finden Sie noch einen Hinweis, wo und wie Sie Antworten auf eventuelle Fragen oder auch die ausgearbeitete Datei bekommen können. Grundlegendes zum Thema M-Code lesen Sie hier im Blog nach.