Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Problem mit VBA Code bei Bachelorarbeit
#1
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


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
Hallöchen,

Filtere doch einfach Spalte C nach >= 6
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
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?
Antworten Top
#4
Hallo,

auch hier hilft eine Beispieldatei beim Helfen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
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


Angehängte Dateien
.xlsm   Bsp_Datei1.xlsm (Größe: 1,81 MB / Downloads: 7)
Antworten Top
#6
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
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#7
Das passt wunderbar, vielen Dank!!!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste