Ich hab dir mal ein kleines Beispiel geschrieben:
Den Folgenden Code in ein Modul einfügen:
Code:
Sub GetWerte()
Dim curPos As Long, varWert As Single, Counter As Long
Dim varTest As String, varCellMW As Integer
curPos = 2
varTest = Worksheets(1).Cells(curPos, 1).Value
varCellMW = 3
Do
If Worksheets(1).Cells(curPos, 1).Value = varTest Then
Else:
Worksheets(1).Cells(curPos - 1, varCellMW).Value = varWert / Counter
varWert = Val(Worksheets(1).Cells(curPos, 2).Value)
Counter = 1
varTest = Worksheets(1).Cells(curPos, 1).Value
End If
curPos = curPos + 1
Loop Until varTest = "Tab_End"
End Sub
Code:
Sub GetNewWerte(varCell As Long)
Dim curPos As Long, varWert As Single, Counter As Long
Dim varTest As String, varCellMW As Integer
varTest = Worksheets(1).Cells(varCell - 1, 1).Value
varCellMW = 3
curPos = varCell + 1
Do
curPos = curPos - 1
Loop Until Worksheets(1).Cells(curPos - 1, 1).Value <> varTest
Do
varWert = varWert + Val(Worksheets(1).Cells(curPos, 2).Value)
Counter = Counter + 1
curPos = curPos + 1
Loop Until Worksheets(1).Cells(curPos, 1).Value <> varTest
Worksheets(1).Cells(curPos - 1, varCellMW).Value = varWert / Counter
End Sub
Die erste Prozedur summiert alles, bildet den Mittelwert und schreibt ihn in die letzte Zeile des jeweiligen Tests. Dazu gibt es 2 Restriktionen:
1) Die Tests müssen so wie in deinem Beispiel HINTEREINANDER eingetragen werden, der Name muß in einer Testreihe gleich bleiben.
2) Am Ende ALLER Testreihen muß ein bestimmter Text stehen (in meinem Fall
Tab_End, den jeweiligen Text, kann auch ein Leertext sein, kannst du in der Zeile
Loop Until varTest = anpassen). Wenn das nicht geschieht, läuft das ganze in einer Endlosschleife.
Es gäbe dann noch die Möglichkeit, beim Ändern eines Testwertes die Mittelwerte aktualisieren zu lassen. Dazu links unter
Microsoft Excel Objecte auf die Tabelle, wo die Werte sind doppelklicken, dann ins Fenster folgendes eintragen:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 Then Call GetNewWerte
End Sub
Dabei wird, wenn ein Wert in Spalte 2 (Messwerte) geändert wird, die zweite Prozedur aufgerufen. Diese ermittelt die Größe der Messreihe und schreibt den neuen Mittelwert. Ist zeitlich nicht so aufwendig wie eine komplette Neuberechnung.
Ist sicher nur eine vorübergehende Lösung, momentan aber das beste, was ich habe.
Der Doc!