Daten Bereinigung mit VBA-Excel
05.12.2017 11:40:06
legac
ich versuche eine Datenreihe zu bereinigen. es Sind Messdaten wo manchmal Ausreißer auftauchen.
gewünscht: es wird jede zelle geprüft und wenn eine Zelle(i+1) eine auffällige Wert aufweist wird sie übersprungen bis wieder eine zelle(i+j) gefunden ist, welche eine plausibler wert enthält. hier wird dann die Mittelwert der ersten und letzten plausiblen (korrekten) wert gebildet und wird in der Zelle (i+1) übergeben.
also:
Zelle(i): korrekt wert in datenreihe vor dem Ausreißer
Zelle(i+j): Zelle mit ausreißer
Zelle(i+j+1): zelle mit korrektem wert nach Ausreißer
Public Sub Korrek()
Dim i, j, Anzahl As Integer
Dim t, x, y As Long
Dim Faktor1, Faktor2 As Long
letztezeile = Worksheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets("Tabelle1")
.Range("B1:B2881").Copy
.Paste Destination:=.Range("E1")
For i = 1 To 2881 Step j
't = Worksheets("Tabelle1").Range("E" & (i - j)).Value
x = Worksheets("Tabelle1").Range("E" & i).Value
y = Worksheets("Tabelle1").Range("E" & (i + 1)).Value
q = Worksheets("Tabelle1").Range("E" & (i + j)).Value
Faktor2 = Abs(y / x)
If (Faktor2 > 2 Or Faktor2 2 Or (.Range("E" _
_
& (i + j)).Value / .Range("E" & i).Value)
leider funktioniert dies nur bedingt wenn nicht falsch. die schleife für j kriege ich nicht korrekt hin, so dass j zurückgesetzt ist wenn die Nebenbedingung (if schleife) nicht zutrifft.
ich hoffe ich konnte das Problem so gut wie möglich beschreiben und hoffe auf eure Hilfe.
Legac