AW: Tendenz wird falsch errechnet
09.07.2007 07:37:51
ingUR
Nun, reiner,
die Aufgabenstellung wird eher komplexer, wenn du nun noch beschreibst, dass nicht für jeder Viertelstunde eine Meßwert eingetragen werden kann, sei es auch nur der unveränderte Vorgängerwert asl "Füllwert", und dennoch den Ein- und Zweistundenintervall bei der Auswertug berücksichtigen möchtest, denn nun mußt Du auch noch die Uhrzeitdifferenzen zur Ermittlung der Datenrange berücksichtigen, was allerdings bei Auswertung der Information aus Spalte A möglich sein sollte.
Pseudo-Programmstück zur Bestimmung der Datenrange
Zeile des Letzten Meßwertes LastR
Uhrzeit des letzten Meßwertes LastT [hh:mm]
Uhrzeit des Beginns des Beobachtungszeitraums StartT > LastT - 1 Std.
Bestimme Zeile StartR, in der StartT zu finden ist.
Ist LastR-StartR > 3 dann Set rng = Cells(StartR, "B"), Cells(LastR,"B") sonst, oder wenn keine _
Tendenz ermittelbar, erhöhe Zeitspanne um eine Stunde, also StartT > LastT -2 Std, und versuche erneut eine Tendenz zu bestimmen.
Ist die Datenrange bestimmt, folgt der weitere Verlauf dem bisherigen Konzept.
Jedoch zeigt Dein Test mir auch den Fehler auf, der in der Programmsequenz meinees vorherigen Beitrags steckt. Leider habe nicht, in Verbindung mit den bisherigen Angaben, herauslesen können, welches Ergebnis Du für diesen Datenblock erwartest. Nach der bisherigen Angabe, wonach eine Tendenz erst dan festgestellt wird, wenn die Differenz mehr als Differenzpunkte beträgt, müßte die Zeitspanne um drei Stunden erweitert werden.
Hier nun noch die Abänderungen, jedoch ohne die Anpassung des Datenbereiches an die durch Uhrzeit bestimmete Datenspanne:
Option Explicit
Dim WertMin%, WertMax%, WertAve%, WertEnde%, rng As Object
Const HEADERROWS = 0
Sub Spalte_B()
Dim rngC As Range
Dim LastV%, LastMax%, LastMin%, Chg%, SumRising%, SumFalling%
Dim LastR As Long, m As Integer
Dim textNb As Integer, boxText()
boxText = Array("fallend", "unverändert", "steigend", "#NV")
LastR = Cells(Rows.Count, 2).End(xlUp).Row
Do
m = m + 1
If LastR 0 Then
Chg = rngC - LastV
If Chg rngC - LastMax Then
SumFalling = rngC - LastMax
If rngC 0 Then
If SumRising LastMax Then LastMax = rngC
End If
If SumRising > 2 Then
SumFalling = 0
LastMax = rngC
End If
End If
End If
LastV = rngC
Next rngC
textNb = 0
If SumRising > 2 Then
textNb = 1
ElseIf SumFalling
Wenn nun entgegen der bisherigen Bestimmungsgrundsätzen
Die Berechnung erfolgt nach folgendem Muster :
Luftdruck mehr als 2 hPa in 3 Stunden gestiegen -> steigend
Luftdruck mehr als 2 hPa in 3 Stunden gefallen -> fallend
auch die absolute Differenz gleich |2hPa| sein kann, dann sind die Abfragen ensprechend durch das Gleichheitszeichen zu ergänzen.
Gruß,
Uwe