(Forum) Anzahl Teilnehmer im Monat

Quelle: https://www.herber.de/cgi-bin/eachthread.pl?idx=1989200
Stand: 26.08.2024 21:45

Hier der Eröff­nungs­beitrag aus dem Her­ber-Forum:


Hal­lo,
ich habe eine Tabelle mit Beginn‑, Ende­da­tum und Namen eines Kursteil­nehmers.

Beispiel:
01.04.2024 / 30.09.2024 / Kurt
01.03.2024 / 25.07.2024 / Mar­tin
06.05.2024 / 30.11.2024 / Uwe

Aus dieser Tabelle möchte ich eine Pri­vat­ta­belle mit Anzahl der Teil­nehmer pro Monat.

Danke!
Gruß
Did­dlone


Prinzip­iell ist das aus mein­er Sicht ein Klas­sik­er für den Ein­satz von Pow­er Query. In diesem Fall war keine Mus­ter­datei beige­fügt, ich habe die 3 Muster-Zeilen per copy/paste in ein leeres Arbeits­blatt einge­fügt und anschließend in der Form als Import-Basis ver­wen­det. – Und natür­lich kann das Ergeb­nis auch als Piv­ot­Table aus­gegeben wer­den… 😉

Meine Inter­pre­ta­tion der Fragestel­lung: Auch wenn ein Teil­nehmer nur 1 Tag in einem Monat anwe­send bzw. gebucht war, wird er oder sie dem Monat zugerech­net.

Da die Muster-Dat­en sich alle in einem Kalen­der­jahr „abspie­len“, habe ich auch auf die Berück­sich­ti­gung eines eventuellen Jahreswech­sels verzichtet. Selb­stre­dend ist eine jahresüber­greifende Auswer­tung auch möglich, wenn beispiel­sweise das Geschäft­s­jahr eines Unternehmens nicht mit dem Kalen­der­jahr übere­in­stimmt.

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 Stich­wort last but not least find­en Sie noch einen Hin­weis, wo und wie Sie Antworten auf eventuelle Fra­gen oder auch die aus­gear­beit­ete Datei bekom­men kön­nen. Grundle­gen­des zum The­ma M-Code lesen Sie hier im Blog nach.

 

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.