Identifizierung doppelten Zeitrahmen
Wenn Sie die doppelte Zeile mit mehreren Einträgen für dieselbe Person herausfinden möchten und doppelte Einträge herausfinden möchten, sollten Sie diesen Artikel nicht verpassen. Wir stellen Ihnen einen Makrocode zur Verfügung, mit dem Sie die doppelten Zeilen identifizieren können. In diesem Artikel erfahren Sie, wie Sie doppelte Zeilen basierend auf einer bestimmten Spalte finden.
Frage: Ich habe eine Tabelle mit mehreren Zeitstempeleinträgen für Personen. Diese Personen können an mehreren Orten gleichzeitig ein- oder aussteigen. Der Versuch, eine Formel oder ein Makro zu schreiben (nicht sicher, welches in diesem Fall das Ziel am besten erreicht), das die Daten durchsucht und in roten Linien mit Zeiten hervorhebt, die sich für eine bestimmte Person überschneiden. Ist das möglich und könnte jemand bitte helfen? Danke vielmals.
Die ursprüngliche Frage finden Sie unter here
Es folgt die Momentaufnahme des vorherigen Blattes:
Es folgt die Momentaufnahme des Nachblatts:
Um den Code zu erhalten; Führen Sie die folgenden Schritte aus, um den Visual Basic-Editor 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.Offset(0, 1)) _ Or (cell.Offset(0, 4) >= 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
Bild: https: //www.office-skill.site/images/wp-content-uploads-2015-07-image-43.png [Bild 4, Breite = 624, Höhe = 293] * Während wir das Makro ausführen, wir werden das Ergebnis bekommen; Siehe folgenden Schnappschuss:
Code Erläuterung:
Deklarieren Sie rng, cell, trng, tcell als Bereich Lr so lange * lr = Cells (Rows.Count, „A“). End (xlUp) .Row überprüft die letzte Zeile des aktuellen Blattes.
-
Bereich („A2: H“ & lr) .Interior.ColorIndex = xlNone; Dadurch wird der Bereich von der Zelle A2 bis zur Spalte H bis zur letzten Zeile ausgewählt (in unserem Beispiel wird A2: H5 ausgewählt) und es wird sichergestellt, dass keine Farbe gefüllt ist.
Setze rng = Range („C2: C“ & lr); Spalte C (Profil-ID) wird in rng für jede Zelle in rng gespeichert; Jetzt werden wir für jede Schleife in rng, d. h. Spalte C, ausführen. Wenn Application.CountIf (Bereich („C2“, Zelle), cell.Value)> 1 Dann; Dadurch wird überprüft, wie oft der Zellenwert größer als 1 ist. Wenn mehr als 1 gefunden wird, dann setze trng = Range („F2: F“ & cell.Row – 1); Jetzt setzen wir die Spalte F, d. h.
IN time in trng * Als nächstes führen wir For each Loop in trng aus und prüfen, ob es eine doppelte Zeile gibt, und markieren sie mit roter Farbe, falls eine gefunden wird.
Schlussfolgerung: Auf diese Weise können wir doppelte Werte mithilfe von Makrocode finden und später entfernen.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie Ihren Freunden auf Facebook mit. Sie können uns auch auf Twitter und Facebook folgen.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder innovieren und für Sie verbessern können. Schreiben Sie uns an [email protected]