Clever-Excel-Forum

Normale Version: Problem mit VBA Code bei Bachelorarbeit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo meine Lieben,

ich muss im Rahmen meiner Bachelorarbeit Daten prüfen. Es geht um die Daten einer Wetterstation. Dort werden in 5 min Abständen diverse Parameter wie Luftfeuchte, Temperatur usw. gemessen.

In einem Schritt soll ich überprüfen, ob ein Messwert über einen längeren Zeitraum unverändert gemessen wird. Also quasi
19.10 Uhr: Luftfeuchte 90%
19.15 Uhr : Luftfeuchte 90 %
19.20 Uhr: Luftfeuchte 90 %
usw.
Bei der Luftfeuchte sind 6 Stunden zweifelhaft und 12 Stunden fehlerhaft. Diese zeitlichen Grenzen variieren für jeden Parameter

Ich habe dazu schon einen Code in VBA gefunden, allerdings ermöglicht dieser mir ledglich herauszufinden ob es Zeiträume gibt, die länger als die oben genannten Grenzen sind. Ich müsste aber noch wissen wann diese Zeiträume waren. In Zeile C sieht man wie Ecxel zählt. Die 6 in C8 zählt die identischen Werte von B8-B13. Unter dem Bild ist auch der code hinterlegt. Falls in der Zeile C eine Zahl größer 72 steht heißt das, dass länger als 6 Stunden dersselbe Messwerte gemessen wurde.  Dann wird das in Zeile D2/E2 gezählt. (6 Stunden * 60 min / 5 (1 Messung pro 5 Minuten). Es gab also 13 zweifelhaft Zeiträume, die ich aber nicht finden kann. Weil es so viele DAten sind 105000 Zeilen.

Es wäre super hilfreich, wenn mir jemand sagen könnte wie ich die 13 Zeiträume (D2) finden kann, die länger als 6 Stunden den selben Wert gemessen haben.
Ein Bildausschnit befindet sich im Anhang. 

[
Bild bitte so als Datei hochladen: Klick mich!
]

Public Sub Vorkommen()

Dim lZeile_Q As Long
Dim lZeile_Z As Long
Dim vWert As Variant

vWert = Cells(1, 2).Value ' den ersten Wert aus Spalte B speichern
lZeile_Z = 1


For lZeile_Q = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(lZeile_Q, 2).Value = vWert Then
Cells(lZeile_Z, 3).Value = Cells(lZeile_Z, 3).Value + 1
Else
lZeile_Z = lZeile_Z + 1
Cells(lZeile_Z, 3).Value = Cells(lZeile_Z, 3).Value + 1
vWert = Cells(lZeile_Q, 2).Value
End If
Next lZeile_Q

End Sub

Vielen Dank für jede Hilfe im voraus!!!
LG Siggi
Hallöchen,

Filtere doch einfach Spalte C nach >= 6
Hi,

danke für die Hilfe aber das ist nicht wirklich das Problem.

Ich muss entweder nachvollziehen können zu welchen Zeiträumen die selben Zahlen vorkommen. Oder ich ändere den VBA Code, dass Excel die gezählten Werte in Zeile C nicht hintereinander schreibt, sondern jeweils in die Zeile , in die der erste Werte sich beginnt zu wiederholen. Dann könnte ich auch nachvollziehen wann diese Wiederholungen waren.

Verstehst du mein Problem?
Hallo,

auch hier hilft eine Beispieldatei beim Helfen.
Hallo,

im Anhang befindet sich eine Bespieldatei.

Ich habe für die ersten Zeilen die zugehörigen Zellen farblich markiert.

Es dauert bloß zu lange alles manuell zuzuordnen.

Wie kann das automatisch jeweils zuordnen ?

LG Siggi
Hallo,

sieh mal, ob dich das der Lösung näher bringt:

Code:
Option Explicit

Sub dop()
    Dim lngZeile As Long
    Dim intAnz As Integer
    For lngZeile = 2 To 105121
        If Cells(lngZeile, 2) = Cells(lngZeile - 1, 2) Then
            intAnz = intAnz + 1
            Cells(lngZeile, 4) = intAnz
        Else
            intAnz = 0
        End If
        Next lngZeile
End Sub
Das passt wunderbar, vielen Dank!!!