(Forum) Mittelwert der letzten 10 Arbeitstage

Quelle: https://www.herber.de/cgi-bin/eachthread.pl?idx=1989543
Stand: 29.08.2024 19:45

Bitte beacht­en Sie die hier beschriebene Beson­der­heit in Sachen des Her­ber-Forums.


Die Fragestel­lung  von Manfred282

Hal­lo,

ich habe für mein Team eine Excel Datei erstellt, in der ich die tägliche Inbound Mail­bear­beitung ein­trage.

Hier­für habe ich in Spalte A das Datum und in Spalte B bis I die einzel­nen Mitar­beit­er.

Die Dat­en starten ab Zeile 6, die ersten Zeilen sind nur für Namen, Durch­schnittswerte gesamt, usw.

So, nun zum Prob­lem. Aktuell sieht die Formel bei mir so aus (Durch­schnitt let­zte 10 Tage):

=MITTELWERT(BEREICH.VERSCHIEBEN($B$6;ANZAHL2($B$6:$B$999)-10;0;10;1))

Das klappt auch soweit ganz gut, bis auf ein kleines Prob­lem.

In den Spal­ten B bis I sind nicht nur die Zahlen mit der Anzahl der Mails, son­dern auch Buch­staben mit „F”,„K” und „U”, damit ich auch gle­ich weiß, wann der Mitar­beit­er Krank oder Urlaub hat­te.

Wenn ich jet­zt jeman­den in der Liste habe, der 10 aufeinan­der­fol­gende Tage oder mehr einen Buch­staben in den Zellen hat, dann gibt Excel mit als Ergeb­nis „#DIV/0!” als Ergeb­nis an, was auch logisch ist, da er dann den Mit­tel­w­ert daraus errech­nen will und das funk­tion­iert nun mal nicht.

Bei der nor­malen Mit­tel­w­ert­berech­nung mit =MITTELWERT(B6:B999) ignori­ert er ja leere Zellen und Zellen mit Buch­staben.

Kann ich meine Formel oben so ändern, dass er nur Zahlen in die Berech­nung aufn­immt, dies müsste ja mit =WENN(ISTZAHL oder so ähn­lich funk­tion­ieren, oder?

Lei­der bin ich kein Excel Profi und bräuchte deswe­gen mal ein wenig Hil­fe, wie ich die Formel umstellen kann 😉

Schon mal danke…


Ein, zwei Anmerkun­gen vor­ab: Man­fred ist ein­er der weni­gen Fragesteller, die sich nicht nur zum Null­tarif „bedi­enen lassen“ wollen, er hat sich wirk­lich Mühe gegeben und all seine aus erster Betra­ch­tung sin­nvollen Ver­suche aufge­führt. Und die Weisung (Funk­tion) BEREICH.VERSCHIEBEN() ist abso­lut nicht der Hit, weil volatil und damit ein Ressourcenfress­er.

Da lei­der vom Hil­fe suchen­den bis jet­zt keine Mus­ter­datei eingestellt wor­den ist, habe ich eine durch einen anderen Helfer erstellte Beispiel­d­atei ver­wen­det und noch etwas manip­uliert. Diese biete ich Ihnen hier zum Down­load an.

Im End­ef­fekt soll dieses Ergeb­nis her­auskom­men:

Da für mich die Nachvol­lziehbarkeit und Trans­parenz im Vorder­grund ste­ht, habe ich mehrere Abfra­gen erstellt. Und die dem PQ eigene Dynamik sorgt dafür, dass jed­er neue Tag automa­tisch kor­rekt erfasst wird.

Der Import-Code

let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Datum", type date}, {"Anna", type any}, {"Bert", type any}, {"Charly", type any}, {"Dolly", type any}}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", {"Datum"}, "Attribut", "Wert"),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Entpivotierte andere Spalten",{{"Attribut", "Name"}}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Umbenannte Spalten",{{"Wert", Int64.Type}}),
    #"Entfernte Fehler" = Table.RemoveRowsWithErrors(#"Geänderter Typ1", {"Wert"})
in
    #"Entfernte Fehler"

Die Query für den ersten Namen… (Anna)  Hin­weis: Ver­weis, nicht Duplizieren!

let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Datum", type date}, {"Anna", type any}, {"Bert", type any}, {"Charly", type any}, {"Dolly", type any}}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", {"Datum"}, "Attribut", "Wert"),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Entpivotierte andere Spalten",{{"Attribut", "Name"}}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Umbenannte Spalten",{{"Wert", Int64.Type}}),
    #"Entfernte Fehler" = Table.RemoveRowsWithErrors(#"Geänderter Typ1", {"Wert"})
in
    #"Entfernte Fehler"

Die 3 weit­eren Abfra­gen sind iden­tisch, nur der Fil­ter-Name (in Zeile_3) wurde angepasst. Die let­zte Query fasst nun die einzel­nen Fil­ter-Queries zum Ergeb­nis zusam­men:

let
    Quelle = Table.Combine({Anna, Bert, Charly, Dolly})
in
    Quelle

Viel Erfolg beim Erstellen Ihrer Lösung! …Und natür­lich ist es auch möglich, in der Datei mit den Roh­dat­en (Raw­Da­ta) ein Feld zu erstellen, wo die Zahl der auszuw­er­tenden let­zten Arbeit­stage je Mitar­beit­er einge­tra­gen und durch PQ aus­gew­ertet wird.


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 Daten zusammenführen, Datum & Zeit, Entpivotieren, Foren-Q&A, Power Query abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.