Identificering af dublerede tidsrammer

Anonim

Hvis du vil finde ud af den dublerede række med flere poster for samme person, og du vil finde ud af dublerede poster, bør du ikke gå glip af denne artikel. Vi leverer en makrokode til at hjælpe dig med at identificere de dublerede rækker. I denne artikel lærer vi, hvordan du finder dublerede rækker baseret på en bestemt kolonne.

Spørgsmål: Jeg har et regneark med flere tidsstemplede poster for mennesker. Disse mennesker kan klokke ind eller ud flere steder på samme tid. Forsøger at skrive en formel eller makro (ved ikke, hvilket der bedst opnår målet i dette tilfælde), der vil søge i dataene og markere med røde linjer med tider, der overlapper en bestemt person. Er dette muligt, og er det noget, nogen kan hjælpe med? Mange tak.

Det originale spørgsmål kan findes her

Følgende er et øjebliksbillede af førarket:

Følgende er snapshot af efterark:

For at få koden; vi skal følge nedenstående trin for at starte Visual Basic -editorskærm

  • Klik på fanen Udvikler
  • Vælg Visual Basic i kodegruppen

  • Kopier nedenstående kode i standardmodulet
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 Indstil derefter trng = Område ("F2: F" & cell.Række - 1) For hver tcell I trng Hvis tcell.Offset (0, -3) = celle Så Hvis (cell.Offset (0, 3)> = tcell Og cell.Offset (0, 3) = tcell And cell.Offset (0, 4) <= tcell.Offset (0, 1)) Herefter 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 kører makroen, får vi resultatet; se nedenstående snapshot:

Kode Forklaring:

  • Angiv rng, celle, trng, tcell som område
  • Lr så længe
  • lr = Celler (rækker.Tælling, "A"). Afslut (xlUp). Række kontrollerer den sidste række i det aktuelle ark.
  • Område ("A2: H" & lr) .Interior.ColorIndex = xlNone; dette vælger område, der starter fra celle A2 til H -kolonne indtil den sidste række (A2: H5 vælges i vores eksempel) og sikrer, at der ikke fyldes farve.
  • Indstil rng = Range ("C2: C" & lr); kolonne C (profil -id) gemmes i rng
  • For hver celle I rng; nu vil vi køre For hver sløjfe i rng, dvs. kolonne C
  • Hvis Application.CountIf (Range ("C2", celle), cell.Value)> 1 Derefter; dette vil kontrollere antallet af gange, celleværdien er større end 1; hvis fundet større end 1, så
  • Indstil trng = Range ("F2: F" & cell.Række - 1); nu vil vi indstille kolonne F dvs. IN tid i trng
  • Den næste vil vi køre For Every Loop i trng og kontrollere, om der er en dubleret række og fremhæve den med rød farve, hvis den findes.

Konklusion: På denne måde kan vi finde dublerede værdier ved hjælp af makrokode og kan fjerne dem senere.

Hvis du kunne lide vores blogs, kan du dele den med dine venner på Facebook. Og også du kan følge os på Twitter og Facebook.
Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre, supplere eller innovere vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet