Auszug aus meiner Tabelle:
ZeitD1 StärkeD1
09:11:18 -90
09:11:18 -90
09:11:18 -89
09:11:18 -89
09:11:18 -89
09:11:19 -83
09:11:19 -83
09:11:19 -83
09:11:19 -90
09:11:19 -90
09:11:22 -88
09:11:30 -94
09:11:32 -94
09:11:33 -91
09:11:34 -89
09:11:35 -94
Ich möchte aus jeder Sekunde (immer, wenn die uhrzeit wechselt) den durchschnittswert der sekunde haben.
Sub MittelwertInCausDwennAident()
Dim Werte As FormatDateTime(Werte,[vbGeneralDate]) as string
Dim SumAnz() As Variant 'Wert | Summe | Anzahl
Dim DicZeilen As Object 'Zeilen des Arrays SumAnz
Dim i As Long
Dim Zeile
Application.ScreenUpdating = False
'Werte auslesen:
Werte = Range("A1").CurrentRegion.Value
'Array + Dic:
ReDim SumAnz(1 To UBound(Werte, 1), 1 To 2)
Set DicZeilen = CreateObject("Scripting.Dictionary")
'Anzahl und Summe bilden:
On Error Resume Next
With Application.WorksheetFunction
For i = 1 To UBound(Werte, 1)
DicZeilen.Add Werte(i, 1), i 'Wert, Zeile
If Err.Number = 0 Then
Zeile = i 'Zeile
Else
Zeile = DicZeilen.Item(Werte(i, 1)) 'Zeile
Err.Clear
End If
SumAnz(Zeile, 1) = SumAnz(Zeile, 1) + Werte(i, 2) 'Summe
SumAnz(Zeile, 2) = SumAnz(Zeile, 2) + 1 'Anzahl
Next
End With
On Error GoTo 0
'Ausgabe auf Tabellenblatt
i = 1 'Erste Zeile der Ausgabe
For Each Zeile In DicZeilen.items
Cells(i, 3).Value = Werte(Zeile, 1) 'Wert
Cells(i, 4).Value = SumAnz(Zeile, 1) / SumAnz(Zeile, 2) 'Mittelwert
i = i + 1
Next
Set Zeile = Nothing: Set DicZeilen = Nothing
Application.ScreenUpdating = True
End Sub
|