Autor
|
Thema: Mittelwert von Zahlen innerhalb eines Bereiches (1349 mal gelesen)
|
BauingStudentTU Mitglied
Beiträge: 6 Registriert: 09.07.2014
|
erstellt am: 12. Okt. 2014 00:41 <-- editieren / zitieren --> Unities abgeben:
Hi, das Bild zeigt eine geplottete Zahlenreihe. Zu erkennen ist, dass sich an den Hoch und Tiefpunkten Werte häufen. Nun soll jeweils pro Häufung der Mittelwert der Werte, die sich in diesem Häufungsbereich befinden berechnet werden. Hat da jemand eine Idee? Danke Wäre es möglich mit VBA einfach alle Werte raus streichen, die hintereinander folgen steigen oder fallen? Also quasi if min 20 Werte aufeinander folgend x<(x+1) oder x>(x+1) sind then diese Werte löschen .... aber wie geht das? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 13. Okt. 2014 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für BauingStudentTU
|
Frank88 Mitglied
Beiträge: 153 Registriert: 11.10.2004
|
erstellt am: 21. Okt. 2014 22:46 <-- editieren / zitieren --> Unities abgeben: Nur für BauingStudentTU
Hallo, wenn die Kurve immer so gleichmässig aussieht, kann man auch eine Mittelwertbildung starten, wenn ein bestimmter Wert über- und sie wieder stoppen, wenn er unterschritten wird (für die Tiefpunkte der Kurve natürlich umgekehrt) a la:
Code:
if Wert(i) > Trigger then if not Wert(i+1) < Trigger then Zähler=1 Summe = Summe + Wert Mittelwert = Summe/Zähler end if end if Zelle(i)=Mittelwert Zelle(i>)=Zähler Summe = 0 Zähler = 0 Mittelwert = 0
'i' steht für die Folge der Werte. 'i+1' heisst nächster Wert. Bei der Zelle soll es heissen, dass eine nebenstehende/andere Zelle beschrieben wird. Grüsse, Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 22. Okt. 2014 00:31 <-- editieren / zitieren --> Unities abgeben: Nur für BauingStudentTU
Eine Beispieltabelle wäre wirklich hilfreich, ansonsten ist die Lösung von Frank88 schon fast perfekt. Den "Trigger" könnte man über den Mittelwert aller Messwerte bestimmen und die Mittelwerte der Min- / Maxwerte in eine neue Spalte oder Tabelle schreiben lassen. Könnte dann so aussehen:
Code:
Sub main() Dim SR As Long, SC As Long ' Ausgangswerte Dim ER As Long, ES As Long ' Ergeniswerte Dim myRange As Range Dim Trigger As Double Dim Max As Double Dim Vergleich As Integer ' Ausgangsdaten festlegen SC = Asc("B") - 64 'Spalte der Ausgangswerte SR = 2 ' Reihenbeginn der Ausgangswerte ES = Asc("C") - 64 ' Spalte für Ergebniswerte ER = SR ' gleiche Reihe wie Ausgangswerte für Ergebniswerte ' Mittelwert der Ausgangsdaten bestimmen Set myRange = Me.Range("B:B") Trigger = Application.WorksheetFunction.Average(myRange) Max = 0# zaehl = 0 Vergleich = Sgn(Cells(SR, SC) - Trigger) 'Vorzeichenbereich des ersten Wertes bestimmen While Not IsEmpty(Cells(SR, SC)) ' solange Spalte SR Reihe SR nicht leer ist 'Ist der neue Wert auf der gleichen Seite des Mittelwertes? If Vergleich <> Sgn(Cells(SR, SC) - Trigger) Then ' Nein, alte Reihe auswerten und neue beginnen Cells(ER, ES) = Max / zaehl ' Mittelwert bestimmen und speichern ER = ER + 1 'nächste Ergebnisreihe festlegen Vergleich = Sgn(Cells(SR, SC) - Trigger) 'neuen Vergleichswert merken Max = 0 ' Summe zurücksetzen zaehl = 0 ' Zaehler zurücksetzen End If ' Werte aufaddieren zaehl = zaehl + 1 ' Zaehler erhöhen Max = Max + Cells(SR, SC) ' Werte aufaddieren SR = SR + 1 ' nächste Ausgangsreihe festlegen Wend ' offene Werte auswerten Cells(ER, ES) = Max / zaehl End Sub
[Diese Nachricht wurde von KlaK am 22. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|