Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten Bereinigung mit VBA-Excel

Daten Bereinigung mit VBA-Excel
05.12.2017 11:40:06
legac
Hallo Zusammen,
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten Bereinigung mit VBA-Excel
05.12.2017 11:55:02
legac
die Datei habe ich hochgeladen. bitte die erste Zeile löschen damit der Code funktioniert. diese wurde nur fürs Verständnis zugefügt.
Grüße
Legac
AW: Vorschlag
05.12.2017 15:48:39
Fennek
für Daimler:
=WENN(ODER(C904/C905>2;C904/C905
in Zeile 904 eingeben und dann nach oben und unten kopieren.
Anzeige
AW: Vorschlag
05.12.2017 16:55:10
legac
Hallo Fennek,
danke für die Antwort.
ich würde es gerne via VBA gelöst, da es zb. 3 Ausreißer hintereinander kommen können. da hilft dein Vorschlag leider nicht.
viele Grüße
Legac
AW: Vorschlag
06.12.2017 17:06:48
legacys
keine idee?

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige