16.08.2023, 11:26
Die Datei hat in einem Arbeitsblatt 18 Spalten. In der 9. Spalte befinden sich Uhrzeit-Angaben. Ich versuche die Zeilen in der Spalte 3 ,4, und 8 auf doppelte Werte zu vergleichen. Wenn die Werte der Spalten gleich sind ,und wenn die Differenz der zwei Zeilen in der Spalte 9. kleiner als 300 Sekunden ist, dann sollen beide Zeilen mit den 18 Spalten in der gelben Füllfarbe markiert werden.
Der Code zeigt an der Stelle "Typen Unverträglichkeit an. Was ist in dem Code falsch?
Der Code zeigt an der Stelle "Typen Unverträglichkeit an. Was ist in dem Code falsch?
Code:
timeDiff = Abs(ws.Cells(i, 9).Value - ws.Cells(i - 1, 9).Value) * 24 * 60 * 60 ' in Sekunden umrechnen
Code:
Sub VergleicheUndMarkiere()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' Setze das Arbeitsblatt fest
Set ws = ThisWorkbook.Sheets("Tabelle1")
' Finde die letzte Zeile mit Daten in Spalte 3
lastRow = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row
' Schleife über die Zeilen
For i = 2 To lastRow
' Vergleiche die Werte in Spalten 3, 4 und 8 auf doppelte Werte
If WorksheetFunction.CountIf(ws.Range(ws.Cells(2, 3), ws.Cells(lastRow, 3)), ws.Cells(i, 3).Value) > 1 _
And WorksheetFunction.CountIf(ws.Range(ws.Cells(2, 4), ws.Cells(lastRow, 4)), ws.Cells(i, 4).Value) > 1 _
And WorksheetFunction.CountIf(ws.Range(ws.Cells(2, 8), ws.Cells(lastRow, 8)), ws.Cells(i, 8).Value) > 1 Then
' Berechne die Differenz der Zeiten in Spalte 9 in Sekunden
Dim timeDiff As Double
timeDiff = Abs(ws.Cells(i, 9).Value - ws.Cells(i - 1, 9).Value) * 24 * 60 * 60 ' in Sekunden umrechnen
' Wenn die Differenz kleiner oder gleich 300 Sekunden ist, markiere beide Zeilen
If timeDiff <= 300 Then
' Markiere die aktuelle Zeile und die vorherige Zeile mit gelber Füllfarbe
ws.Range(ws.Cells(i - 1, 1), ws.Cells(i, 18)).Interior.Color = RGB(255, 255, 0) ' Gelb
End If
End If
Next i
End Sub