Identifizieren doppelter Zeitrahmen

Anonim

Wenn Sie die doppelte Zeile mit mehreren Einträgen für dieselbe Person und doppelte Einträge herausfinden möchten, sollten Sie diesen Artikel nicht verpassen. Wir stellen einen Makrocode bereit, der Ihnen hilft, die doppelten Zeilen zu identifizieren. In diesem Artikel erfahren Sie, wie Sie doppelte Zeilen basierend auf einer bestimmten Spalte finden.

Frage: Ich habe eine Tabelle mit mehreren Einträgen mit Zeitstempel für Personen. Diese Personen können an mehreren Orten gleichzeitig ein- oder ausstempeln. Der Versuch, eine Formel oder ein Makro zu schreiben (nicht sicher, welches das Ziel in diesem Fall am besten erreicht), das die Daten durchsucht und in roten Linien mit überlappenden Zeiten für eine bestimmte Person hervorhebt. Ist das möglich und kann mir bitte jemand helfen? Vielen Dank.

Die ursprüngliche Frage findet ihr hier

Im Folgenden ist die Momentaufnahme des Vorher-Blatts:

Im Folgenden ist die Momentaufnahme des Nachblatts:

Um den Code zu erhalten; Wir müssen die folgenden Schritte ausführen, um den Visual Basic-Editor-Bildschirm zu starten

  • Klicken Sie auf die Registerkarte Entwickler
  • Wählen Sie in der Gruppe Code die Option Visual Basic . aus

  • Kopieren Sie den folgenden Code in das Standardmodul
Sub FindOverlapTime() Dim rng As Range, cell As Range, trng As Range, tcell As Range Dim lr As Long lr = Cells(Rows.Count, "A").End(xlUp).Row Range("A2:H" & lr).Interior.ColorIndex = xlNone Set rng = Range("C2:C" & lr) For Each cell In rng If Application.CountIf(Range("C2", cell), cell.Value) > 1 Then Set trng = Range("F2:F" & cell.Row - 1) For Each tcell In trng If tcell.Offset(0, -3) = cell Then If (cell.Offset(0, 3) >= tcell And cell.Offset (0, 3) = tcell And cell.Offset(0, 4) <= tcell.Offset(0, 1)) Then Range("A" & cell.Row & ":H" & cell.Row).Interior. ColorIndex = 3 End If End If Next tcell End If Next cell End Sub 

  • Wenn wir das Makro ausführen, erhalten wir das Ergebnis; siehe unten Schnappschuss:

Code-Erklärung:

  • Deklarieren Sie rng, cell, trng, tcell als Bereich
  • Lr solange
  • lr = Cells(Rows.Count, "A").End(xlUp).Row überprüft die letzte Zeile des aktuellen Blatts.
  • Range("A2:H" & lr).Interior.ColorIndex = xlNone; Dadurch wird der Bereich von Zelle A2 bis Spalte H bis zur letzten Zeile ausgewählt (in unserem Beispiel wird A2: H5 ausgewählt) und sichergestellt, dass keine Farbe gefüllt ist.
  • Set rng = Range("C2:C" & lr); Spalte C (Profil-ID) wird in rng . gespeichert
  • Für jede Zelle In rng; Jetzt werden wir für jede Schleife in rng laufen, d.h. Spalte C
  • If Application.CountIf(Range("C2", cell), cell.Value) > 1 Then; Dadurch wird überprüft, wie oft der Zellenwert größer als 1 ist. wenn größer als 1 gefunden wird, dann
  • Set trng = Range("F2:F" & cell.Row - 1); jetzt setzen wir Spalte F, d.h. IN-Zeit in trng
  • Als nächstes führen wir For Each Loop in trng aus und prüfen, ob eine doppelte Zeile vorhanden ist, und markieren sie mit roter Farbe, wenn eine gefunden wird.

Abschluss: Auf diese Weise können wir mit Makrocode doppelte Werte finden und später entfernen.

Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site