Makro für Mittelwertberechnung
Hallo,
kann mir jmd mit einem Makro weiterhelfen, welches den Mittelwert für jeweils 10 Werte ausrechnet? Es sind an die 50000 Werte die ich bei Excel verarbeiten (zeichnen, rechnen) möchte und diese sollen auf ein normales Maß normieren.
Also nochmal kurz: 50000 Werte und jeweils 10 Werte sollen immer zu einem Mittelwert zusammengefasst werden, d.h. am Ende nur noch 5000 Werte.
Vielen Dank für eure Hilfe!!!
Antwort schreiben
Antwort 1 von rainberg vom 19.04.2019, 23:09 Options
Hallo Sandra,
die Ausgangswerte stehen in A1:A50000
die errechneten Mittelwerte schreibt das Makro in B1:B5000
Option Explicit
Sub mittelwert()
Dim lngi As Long, intN As Integer
intN = 1
Application.ScreenUpdating = False
For lngi = 1 To 130 Step 10
Cells(intN, 2).Value = _
WorksheetFunction.Average(Range(Cells(lngi, 1), Cells(lngi + 9, 1)))
intN = intN + 1
Next
Application.ScreenUpdating = True
End Sub
Gruß
Rainer
Antwort 2 von gast72 vom 19.04.2019, 23:14 Options
Hallo Rainer
sollte es nicht For Ingi=1 to 50000 Step 10 heisen?
kollegialen Gruß
Antwort 3 von rainberg vom 19.04.2019, 23:16 Options
Korrektur:
For lngi = 1 To 130 Step 10 muss heißen
For lngi = 1 To 50000 Step 10
(ich hatte mit nur 130 Zeilen getestet)
Gruß
Rainer
Antwort 4 von Sandra85 vom 19.04.2019, 23:36 Options
Vielen Dank euch beiden! Ich werde es morgen gleich mal ausprobieren.
Bye
Antwort 5 von Sandra85 vom 20.04.2019, 09:53 Options
Super, es funktioniert!
Ich weiss nicht ob es moeglich ist und es muss auch nicht unbedingt sein, aber es waer super wenn ich auch noch ein Makro haette welches das ganze fuer 2 Spalten anwendet. Also in A und B stehen Werte und die Mittelwerte sollen dann jeweils in C und D geschrieben werden.
Wenn es geht waer es fantastisch wenn nicht geht es auch so...
Dankeschoen!
Antwort 6 von rainberg vom 20.04.2019, 11:28 Options
Hallo Sandra,
es ist fantastisch :-))
Option Explicit
Sub mittelwert()
Dim lngi As Long, intN As Integer
intN = 1
Application.ScreenUpdating = False
For lngi = 1 To 50000 Step 10
Cells(intN, 3).Value = _
WorksheetFunction.Average(Range(Cells(lngi, 1), Cells(lngi + 9, 1)))
Cells(intN, 4).Value = _
WorksheetFunction.Average(Range(Cells(lngi, 2), Cells(lngi + 9, 2)))
intN = intN + 1
Next
Application.ScreenUpdating = True
End Sub
Gruß
Rainer
Antwort 7 von Sandra85 vom 20.04.2019, 12:59 Options
Wirklich fantastisch :)
Vielen Dank nochmal! und schoenes Wochenende.