Dubbele tijdframes identificeren

Anonim

Als u de dubbele rij wilt weten met meerdere vermeldingen voor dezelfde persoon en u wilt dubbele vermeldingen vinden, dan mag u dit artikel niet missen. We zullen een macrocode verstrekken om u te helpen de dubbele rijen te identificeren. In dit artikel zullen we leren hoe u dubbele rijen kunt vinden op basis van een bepaalde kolom.

Vraag: Ik heb een spreadsheet met meerdere tijdstempels voor mensen. Deze mensen kunnen op meerdere plaatsen tegelijk in- of uitklokken. Proberen een formule of macro te schrijven (niet zeker welke in dit geval het doel het beste bereikt) die de gegevens doorzoekt en in rode lijnen markeert met tijden die elkaar overlappen voor een specifieke persoon. Is dit mogelijk en is het iets waar iemand mee kan helpen aub? Erg bedankt.

De originele vraag vind je hier

Hieronder volgt de momentopname van het voorblad:

Hieronder volgt de momentopname van after sheet:

Om de code te krijgen; we moeten de onderstaande stappen volgen om het Visual Basic-editorscherm te starten

  • Klik op het tabblad Ontwikkelaar
  • Selecteer in de codegroep Visual Basic

  • Kopieer onderstaande code in de standaard module
Sub FindOverlapTime() Dim rng As Range, cel 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 Stel vervolgens trng in = Bereik ("F2:F" & cel.Rij - 1) Voor elke tcel In trng If tcell.Offset(0, -3) = cel Dan If (cell.Offset(0, 3) >= tcell En cel.Offset (0, 3) = tcell And cell.Offset(0, 4) <= tcell.Offset(0, 1)) Dan Range("A" & cell.Row & ":H" & cell.Rij).Interieur. ColorIndex = 3 End If End If Next tcell End If Next cel End Sub 

  • Terwijl we de macro uitvoeren, krijgen we het resultaat; zie onderstaande momentopname:

Code Verklaring:

  • Declareer rng, cell, trng, tcell als bereik
  • Zo lang
  • lr = Cells(Rows.Count, "A").End(xlUp).Row controleert de laatste rij van het huidige blad.
  • Range("A2:H" & lr).Interieur.ColorIndex = xlNone; dit selecteert een bereik vanaf cel A2 tot kolom H tot de laatste rij (A2:H5 wordt in ons voorbeeld geselecteerd) en zorgt ervoor dat er geen kleur wordt gevuld.
  • Stel rng = Bereik ("C2:C" & lr); kolom C (Profiles ID) wordt opgeslagen in rng
  • Voor elke cel In rng; nu zullen we voor elke lus in rng uitvoeren, d.w.z. kolom C
  • If Application.CountIf(Bereik("C2", cel), cel.Waarde) > 1 Dan; dit controleert het aantal keren dat de celwaarde groter is dan 1; indien gevonden groter dan 1, dan
  • Stel trng = Bereik ("F2:F" & cel.Rij - 1); nu zullen we kolom F instellen, d.w.z. IN tijd in trng
  • De volgende keer zullen we For Each Loop in trng uitvoeren en controleren of er een dubbele rij is en deze met rode kleur markeren als er een wordt gevonden.

Conclusie: Op deze manier kunnen we dubbele waarden vinden met behulp van macrocode en deze later verwijderen.

Als je onze blogs leuk vond, deel deze dan met je vrienden op Facebook. En je kunt ons ook volgen op Twitter en Facebook.
We horen graag van je, laat ons weten hoe we ons werk kunnen verbeteren, aanvullen of vernieuwen en het voor jou beter kunnen maken. Schrijf ons op de e-mailsite