Mittelwert – Spezial (1)

Kurz­fas­sung: Mit­tel­w­ert eines bestimmten/definierten Zeitraums (let­zte n Tage mit Werten) bilden, Zellen ohne einen numerischen Wert sollen nicht berück­sichtigt wer­den.


Hin­weis: Die eigentliche Aufgabe/Problemstellung habe ich einem Forum ent­nom­men, wo ich mich an der Erstel­lung der Lösung beteiligt habe.

In dieser Datei sind aufeinan­der­fol­gende kalen­darischen Dat­en in Spalte A einge­tra­gen, in Spalte B sind dieses beliebige Werte (ganz Zahlen). Diese Werte sind allerd­ings nicht durchgängig vorhan­den, an unter­schiedlichen Stellen sind Lück­en. Diese Zellen sind meis­tens mit einem - verse­hen, mitunter sind sie auch leer.

Für einen definierten Zeitraum der sich aus ein­er bes­timmten Anzahl von Tagen mit einem eingegebe­nen (numerischen) Wert in Spalte B ergibt soll der Mit­tel­w­ert des jew­eili­gen Zeitraums berech­net wer­den.

Das hört sich zwar zu Beginn ganz sim­pel an stellt sich jedoch rasch als schwieriger dar. Ins­beson­dere wenn kein VBA ver­wen­det wer­den soll, ist das ein anspruchsvolles Unter­fan­gen. Es gibt näm­lich noch eine weit­ere Ein­schränkung: Es sollen aus der Liste nur die let­zten (die jüng­sten) 10 (bzw. 30) Tage mit tat­säch­lichen Werten in Spalte B ver­wen­det wer­den, also nicht die let­zten 30 Kalen­dertage son­dern die let­zten 30 (bzw. 10) Pro­duk­tion­stage; und die Eingaben (Spalte B) in der Liste wer­den täglich um das aktuelle Datum erweit­ert. Der erste einzuschließende Wert (also das letzte/jüngste Datum in der Tabelle mit einem numerischen Wert in Spalte B) kann entsprechend täglich ein ander­er sein.

▲ nach oben …

Los geht’s

Öff­nen Sie spätestens jet­zt diese Datei und verin­ner­lichen den Auf­bau sowie die Zielset­zung. In Spalte A sind die kalen­darischen Dat­en des 2. Hal­b­jahres 2017 aufge­führt. In der Spalte B ste­hen als Zahlen auss­chließlich pos­i­tive, ganz­zahlige Werte; in den meis­ten Fällen sind Tage ohne angegebene Werte mit einem - aus­ge­füllt, an manchen Tagen (ins­beson­dere in jenen, die in der Zukun­ft liegen) ist das Feld Wert jedoch leer.

Es sollen nun 2 Durch­schnittswerte errech­net wer­den: Aus den let­zten 10 und den let­zten 30 Tagen soll der Mit­tel­w­ert berech­net wer­den. Dabei sollen nur jene Tage gew­ertet wer­den, wo in der Spalte Wert auch eine Zahl einge­tra­gen ist. In der Beispiel­d­atei ist also der 19. Okto­ber der erste einzubeziehen der Tag, der 17. Okto­ber der zweite, der 15. Okto­ber der dritte, der 14. Okto­ber der vierte Tag, usw. Wenn dann am 20. Okto­ber eine Zahl in Spalte B einge­tra­gen wird, begin­nt die Zäh­lung natür­lich an diesem Tag. Diese Dynamik gilt für bei­de genan­nten Anzahl von Tagen.

Da diese Auswer­tung täglich erfol­gen soll ist es müßig, immer und immer wieder das Arbeits­blatt zu kopieren, die leeren oder mit einem - aus­ge­füll­ten Zeilen in Spalte B zu löschen und die let­zten 10 bzw. 30 Zeilen für die Durch­schnitts­berech­nung ste­hen zu lassen. Hier bietet sich Pow­er Query als gute und effiziente Lösung an. Auch wenn es mehrere Lösungswege gibt, zeige ich Ihnen nur zwei, die ich für effizient und den­noch nachvol­lziehbar erachte.

Die Muster-Datei ist geladen. Acht­en Sie darauf, dass eine Zelle inner­halb der Dat­en markiert ist und anschließend entwed­er über den Menüpunkt Pow­er Query | Von Tabelle (Excel 20102013) oder Menü Dat­en | Aus Tabelle in den neueren Ver­sio­nen die Dat­en in den Abfrage-Edi­tor laden. Das sieht dann ver­mut­lich auch bei Ihnen so aus:

Der Abfrage Editor mit den importierten Daten

Der Abfrage Edi­tor mit den importierten Dat­en

Zwei Dinge wer­den Ihnen auf­fall­en: In der 1. Spalte fehlt die Angabe des Wochen­t­ages, dafür ist stets die Uhrzeit 00:00:00 Uhr einge­tra­gen und in der Spalte Wert sind die Zahlen rechts- und die Minusze­ichen links­bündig dargestellt. Das mit dem Datum sollte nicht nur der Optik wegen dahinge­hend geän­dert wer­den, dass auss­chließlich das Datum in der Spalte ste­ht. Dazu ein Recht­sklick in die Über­schrift und im Kon­textmenü wählen Sie Typ ändern ► | Datum.

Im näch­sten Schritt geht es nun darum, alle Zeilen ohne einen numerischen Wert aus der Abfrage zu löschen. Dazu ein Klick in das Drop­down-Sym­bol der Spalte Wert. Um das Häkchen bei (NULL) und beim - zu ent­fer­nen gehe ich über die Auswahl Fil­ter und klicke dann auf Ist nicht gle­ich… So ist gewährleis­tet, dass auch neu hinzugekommene Zahlen­werte, die bis­lang noch nicht in der Liste enthal­ten waren, berück­sichtigt wer­den. Geben Sie zuerst neben entspricht nicht das Minusze­ichen - ein, belassen Sie es danach bei der Options-Auswahl Und, wählen im Kom­bi­na­tions­feld wiederum entspricht nicht und geben in das daneben­liegende Feld den Wert null ein. Also den Text und alles klein, was als Suchkri­teri­um einem leeren Feld entspricht:

So filtern Sie die nicht erwünschten Zeilen

So fil­tern Sie die nicht erwün­scht­en Zeilen

Nach ein­er Bestä­ti­gung wer­den nur noch die 54 Zeilen angezeigt, wo ein numerisch­er Wert in Spalte Wert enthal­ten ist. Diese Abfrage dient nun als Basis für die bei­den kom­menden Fil­terun­gen. Um nicht allzu viel über­flüs­siges Daten­ma­te­r­i­al zu spe­ich­ern, klicke ich nun auf den Text (nicht das Sym­bol) Schließen & laden und anschließend auf den Punkt Schließen & laden in… Ein Klick auf die Options-Schalt­fläche Nur Verbindung erstellen und dann Laden. Und bei der Gele­gen­heit benenne ich die Abfrage beispiel­sweise im recht­en Seit­en­fen­ster auch gle­ich um; der neue Name ist: Alle Tage.

Es sollen ja 2 Werte berech­net wer­den, dazu bedarf es in Pow­er Query zweier neu zu erstel­len­der Abfra­gen. Klick­en Sie dazu im Menü Start auf das Sym­bol Ver­wal­ten und hier auf die untere Auswahl Ver­weis, da ja stets ein dynamis­ch­er Bezug zur Basis-Tabelle gegeben sein soll. Benen­nen Sie nun im linken oder recht­en Seit­en­fen­ster die neu erstellte Abfrage um, der Name sollte 10 Tage sein. Wählen Sie nun wiederum die Abfrage Alle Tage und erstellen auch hier­von auf dem gle­ichen Wege wie eben eine dynamis­che Kopie. Diese Abfrage bekommt naturgemäß den Namen 30 Tage.

Aktivieren Sie nun die Abfrage 10 Tage, wo ich Ihnen die erste der bei­den hier vorgestell­ten Möglichkeit­en zur Fil­terung aufzeige. Da die kalen­darischen Dat­en bere­its sortiert sind, kön­nen Sie sich diesen Vor­gang sparen. Und da dank der vorher durchge­führten Fil­terung auch nur noch jene Tage in der Abfrage enthal­ten sind, die in der Spalte Wert auch eine Zahl enthal­ten, kön­nen Sie fol­gende Aus­sage als gegeben hin­nehmen: „Wenn alle Zeilen mit Aus­nahme der let­zten 10 gelöscht wer­den, verbleiben in der Abfrage nur noch jene Werte, aus denen der Durch­schnitt berech­net wer­den soll.” Und genau das kön­nen Sie so erre­ichen:

  • Menü Zeilen ver­ringern | Zeilen beibehal­ten | Let­zte Zeilen beibehal­ten.
  • Geben Sie bei Anzahl von Zeilen die Zahl 10 ein
  • Bestäti­gen Sie mit OK.

Sie erken­nen, dass exakt die let­zten 10 Zeilen in der Abfrage erhal­ten geblieben sind.


Für den 30-Tage-Block zeige ich Ihnen eine andere Meth­ode auf die vielle­icht etwas aufwendi­ger ist aber dafür auch eine höhere Flex­i­bil­ität gewährleis­tet. Außer­dem kön­nen Sie das ein­fü­gen ein­er Index-Spalte in vie­len anderen Sit­u­a­tio­nen auch ver­wen­den, darum halte ich diese Übung für ganz nüt­zlich. 😎 Noch ein­mal zur Erin­nerung: Es sollen die let­zten 30 der hier aufge­führten 54 Tage zur Berech­nung des Mit­tel­w­erts herange­zo­gen wer­den. Soll­ten sich durch die Fil­terung weniger rel­e­vante Daten­sätze ergeben, so sind (nur) diese zu ver­wen­den. (Die Regelung gilt auch für die 10-Tage Abfrage.) Gehen Sie dazu so vor:

  • Aktivieren Sie die Abfrage für die 30 Tage.
  • Erweit­ern Sie per  die Über­schrift Datum & Wochen­tag | Absteigend sortieren.
  • Menü Spalte hinzufü­gen | den Punkt Indexs­palte (erweit­ern)  | Von 1.
  • Wenn jet­zt der Index mit 0 begin­nt, weil sie zu schnell gek­lickt haben,  😎 löschen Sie im recht­en Seit­en­fen­ster diesen Schritt und führen ihn noch ein­mal kor­rekt aus.
  • Erweit­ern Sie die Spalte Index durch einen Klick auf .
  • Zahlen­fil­ter ► | Klein­er oder gle­ich… und die Zahl 30 in das Textfeld eingeben.
  • Die Spalte Datum & Wochen­tag nun auf­steigend sortieren. Alter­na­tiv kön­nten sie natür­lich auch die Spalte Index absteigend sortieren…
  • Die Spalte Index hat ihren Zweck erfüllt und kann bzw. sollte gelöscht wer­den. Ich mache das durch Recht­sklick in die Über­schrift und im Kon­textmenü Ent­fer­nen.

▲ nach oben …

Die Mittelwert-Berechnung

Jet­zt geht es darum, das endgültige Ziel, jew­eils den Mit­tel­w­ert der bei­den kalen­darischen Blöcke zu berech­nen. Da die Rei­hen­folge der Abar­beitung egal ist, kön­nen Sie auch in der Abfrage 30 Tage bleiben. Markieren Sie erforder­lichen­falls die Spalte Wert. Wech­seln Sie zum Menüpunkt Trans­formieren und Klick­en in der Gruppe Zahlenspalte auf das Sym­bol Sta­tis­tiken. Sie wer­den sich gewiss denken kön­nen, dass die Auswahl Mit­tel­w­ert zum gewün­scht­en Ergeb­nis führen wird. Den­noch wird sie die Darstel­lung des Ergeb­niss­es vielle­icht etwas irri­tieren:

Die Berechnung stimmt, aber die Darstellung ist ungewohnt…

Die Berech­nung stimmt, aber die Darstel­lung ist unge­wohnt…

Das Ergeb­nis ist garantiert kor­rekt, es muss nur noch so ver­ar­beit­et wer­den, dass es in ein Excel-Arbeits­blatt inte­gri­ert wer­den kann. Ein Klick auf das erste Sym­bol in der Sym­bol­leiste Zu Tabelle und die bis­lang unfan­gre­ichere Abfrage ist auf eine Zeile geschrumpft. Außer­dem ist die einzig übrig gebliebene Spalte auch noch mit ein­er anderen Über­schrift (Column1) verse­hen wor­den. Ein Klick in die Über­schrift, F2 und Durch­schnitt 30 Tage ein­tra­gen.

Für die Abfrage 10 Tage kön­nten Sie natür­lich gle­icher­maßen vorge­hen, ich zeige Ihnen jedoch eine 2. Möglichkeit auf:

  • Aktivieren Sie die 10-Tage-Abfrage, beispiel­sweise durch einen Klick im linken Seit­en­fen­ster.
  • Menü Spalte hinzufü­gen | Benutzerdefinierte Spalte.
  • Belassen Sie es gerne bei Benutzerdefiniert in Neuer Spal­tenname, tra­gen Sie bei Benutzerdefinierte Spal­tenformel: fol­gen­des ein: "Mit­tel­w­ert" (also mit den Anführungsstrichen).
Den Inhalt für die neue, benutzerdefinierte Spalte eingeben

Den Inhalt für die neue, benutzerdefinierte Spalte eingeben

  • Recht­sklick in die Über­schrift Benutzerdefiniert und Grup­pieren nach…
  • Schreiben sie hier bei Neuer Spal­tenname den Text Mit­tel­w­ert 10 Tage.
  • Ändern Sie Vor­gang auf Mit­tel­w­ert.
  • Wählen Sie den Ein­trag Wert bei Spalte.
  • Schließen Sie mit OK ab.
  • Löschen Sie die erste Spalte der auf 1 Zeile „geschrumpften” Abfrage, sie wird nicht mehr benötigt.

Prinzip­iell ist die Auf­gabe damit gelöst. Für bei­de Zeiträume liegt das Ergeb­nis der Durch­schnitts­berech­nung in jew­eils ein­er getren­nten Abfrage vor. Menü Datei | Schließen & laden und die bei­den eben erstell­ten Abfra­gen wer­den in jew­eils ein Tabel­len­blatt gespe­ichert.

Sin­nvoller­weise sollen die Ergeb­nisse jedoch auf dem ersten Tabel­len­blatt neben der Tabelle mit den Basis­dat­en erscheinen. Darum markieren Sie die erstellte Tabelle für die 10 Tage kom­plett (mit Über­schrift) und StrgX, um den Bere­ich auszuschnei­den. Wech­seln Sie in das erste Arbeits­blatt, aktivieren Sie die Zelle, wo diese Tabelle abgelegt wer­den soll und StrgV zum ein­fü­gen der Dat­en. – Ver­fahren Sie mit dem Ergeb­nis der 30 Tage genau­so. Die bei­den nun leeren Tabel­len­blät­ter kön­nen Sie löschen.

▲ nach oben …

Dynamik!

Für eine ein­ma­lige Aktion wäre das ganz schön viel Arbeit. Aus mein­er Sicht wahrschein­lich zu viel. Aber es ist ja so, dass täglich neue Dat­en hinzukom­men; an diesen Tagen bleibt dann entwed­er die Zelle der Spalte B leer bzw. wird mit einem - verse­hen oder ein User trägt einen numerisch­er Wert ein. Und im let­zt­ge­nan­nten Fall kommt der Vorteil von Pow­er Query voll zum tra­gen. Wenn die Quell­dat­en sich ändern wird sich ja auch der berech­nete Mit­tel­w­ert für die bei­den Zeitspan­nen ändern.

Fügen Sie gerne in eine leere Zeile unter­halb des let­zten numerischen Ein­trages einen markant hohen Wert ein, beispiel­sweise 999. Dadurch wird mit Sicher­heit der Mit­tel­w­ert bei der Berech­nung der Zeiträume deut­lich verän­dert. Aber wie sie sehen: Sie sehen nichts. Die Ergeb­nisse der bei­den Abfra­gen verän­dern sich nicht. Das ist gewollt und auch gut so, denn es ja dur­chaus möglich, dass mit den bish­eri­gen Ergeb­nis­sen weit­ere Berech­nun­gen erstellt wer­den sollen. Eine Aktu­al­isierung der Abfrage-Ergeb­nisse muss „zu Fuß” angestoßen wer­den. Klick­en Sie auf die jew­eilige Ergeb­nis-Tabelle, Menüpunkt Abfrage und dort Aktu­al­isieren. – Sollen alle Abfrage-Ergeb­nisse der Arbeitsmappe „auf einen Schlag” aktu­al­isiert wer­den, dann geht das zur Zeit nur über eine kleine VBA-Rou­tine.

In naher Zukun­ft ist geplant, einen zweit­en Teil dieser Auswer­tung zu erstellen. Dann soll unter Ver­wen­dung von Pow­er Query ein Mit­tel­w­ert der einzel­nen Wochn­tage erstellt wer­den. Dabei soll die Quell-Tabelle nicht um den berech­neten Wochen­tag ergänzt son­dern auss­chließlich Pow­er Query genutzt wer­den.

▲ nach oben …

 
Dieser Beitrag wurde unter Allgemein, Verschiedenes, Filtern & Sortieren, Ohne Makro/VBA, Power Query abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.