ich habe mit der Hilfe in einem anderen Forum schon einmal einen VBA-Code bekommen, welcher mir die Mittelwerte von Verbräuchen (in Spalte D) über jeweils 12 Monate(Zellen) berechnet. Nun haben sich die Ansprüche geändert und es soll nicht mehr immer der mittlere Verbrauch über 12 Zellen berechnet werden, sondern in Spalte G stehen die Daten, wann der Artikel zum ersten Mal verkauft wurde und sofern das Datum vor dem Beginn der Werte ist (also Verbräuche mit 0) soll der Mittelwert erst ab da berechnet werden.
Also damit es verständlicher wird bin ich zu diesem Forum gewechselt und habe Beispieldaten hochgeladen. In dem Beispiel wäre es bei der Jeans so, dass zwar Daten ab Sep. 13 drinstehen, aber der Verkauf erst ab Feb. 15 begonnen hat. Es sollte dann also der Mittelwert für die ersten 12 Monate gar nicht gerechnet werden und für die nächsten 12, also von Sep. 14 bis August 15, sollten dann nicht die Verbräuche aller letzten 12 Monate addiert und durch 12 geteilt werden, sondern nur die der letzten 7 und entsprechend dann der Mittelwert über 7 Monate bevor im nächsten Jahr wieder über 12 Monate geht, da der Verkauf dann schon gestartet ist.
Ich hatte bisher nur die Idee das zu verwirklichen, indem man sagt, wenn der Verbrauch 0 ist, dann soll es nicht mitzählen, allerdings möchte ich gerne mit den Datumswerten arbeiten, da es ja auch so mal vorkommen kann, dass der Verbrauch auf 0 sinkt (kommt in dem Beispiel jetzt zwar nicht vor).
Hier mal der Code für die Mittelwerte jeweils über 12 Zellen.
Sub MWberechnen()
Dim c As Range 'Zählerzelle
Dim rngMwerte As Range 'Spalte wo Mittelwerte
Dim lngAb As Long 'Zeile ab wo Mittelwerte
Dim lngStep As Long 'Schrittweite
Dim dblMwert As Double 'Block Mittelwert
lngAb = 2: lngStep = 12 'versorgen
Set rngMwerte = Columns("D:D").Cells(lngAb)
Set rngMwerte = Range(rngMwerte, rngMwerte.Offset(lngStep - 1)) 'Block auf Länge bringen
Do While Not IsEmpty(rngMwerte.Cells(1)) 'Schleife bis kein Wert
dblMwert = WorksheetFunction.Average(rngMwerte) 'Block Mittelwert
If WorksheetFunction.CountIf(rngMwerte, 0)
Ich würde mich riesig freuen, wenn ihr mir nochmal helfen könntet. Meine VBA-Kenntnisse sind nämlich leider noch ganz im Anfangsstadium. Freue mich über Antworten.
Liebe Grüße
susi
https://www.herber.de/bbs/user/108050.xlsx
Achso, eine Sache fällt mir gerade noch ein, das Datum, wann ein Artikel eingeführt wurde, ist nicht wie der Verbrauchsdaten jeweils auf dem Monatsersten, das könnte ich sonst aber auch vorher ausbessern und auf den Monatsersten bringen, falls das sonst nur zusätzlich erschwert :)