Identifisere dupliserte tidsrammer

Anonim

Hvis du vil finne ut den dupliserte raden med flere oppføringer for samme person, og du vil finne ut dupliserte oppføringer, bør du ikke gå glipp av denne artikkelen. Vi gir deg en makrokode som hjelper deg med å identifisere duplikatradene. I denne artikkelen lærer vi hvordan du finner dupliserte rader basert på en bestemt kolonne.

Spørsmål: Jeg har et regneark med flere tidsstemplede oppføringer for folk. Disse menneskene kan klokke inn eller ut flere steder samtidig. Prøver å skrive en formel eller makro (ikke sikker på hvilken som oppnår målet best i dette tilfellet) som vil søke i dataene og markere med røde linjer med tider som overlapper for en bestemt person. Er dette mulig, og er det noe noen kan hjelpe med? Mange takk.

Det opprinnelige spørsmålet finner du her

Følgende er øyeblikksbildet av førarket:

Følgende er øyeblikksbildet av etterarket:

For å få koden; vi må følge trinnene nedenfor for å starte Visual Basic -redigeringsskjermen

  • Klikk på kategorien Utvikler
  • Velg Visual Basic fra kodegruppen

  • Kopier koden nedenfor i standardmodulen
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 hver celle I rng If Application.CountIf (Range ("C2", cell), cell.Value)> 1 Sett deretter trng = Range ("F2: F" & cell.Row - 1) For hver tcell I 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 

  • Når vi kjører makroen, får vi resultatet; se øyeblikksbildet nedenfor:

Kode Forklaring:

  • Angi rng, celle, trng, tcell som område
  • Lr så lenge
  • lr = Cells (Rows.Count, "A"). End (xlUp). Row vil kontrollere den siste raden i det gjeldende arket.
  • Område ("A2: H" & lr) .Interior.ColorIndex = xlNone; dette vil velge område fra celle A2 til H -kolonnen til siste rad (A2: H5 vil bli valgt i vårt eksempel) og vil sikre at ingen farge er fylt.
  • Sett rng = Range ("C2: C" & lr); kolonne C (profil -ID) blir lagret i rng
  • For hver celle I rng; nå vil vi kjøre For hver sløyfe i rng, dvs. kolonne C
  • Hvis Application.CountIf (Range ("C2", cell), cell.Value)> 1 Deretter; dette vil kontrollere antall ganger celleverdien er større enn 1; hvis funnet større enn 1, da
  • Sett trng = Range ("F2: F" & cell.Row - 1); nå vil vi sette kolonne F dvs. IN tid i trng
  • Den neste vil vi kjøre For Every Loop i trng og sjekke om det er noen duplikatrad og markere den med rød farge hvis du finner en.

Konklusjon: På denne måten kan vi finne dupliserte verdier ved hjelp av makrokode og kan fjerne dem senere.

Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.
Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post