Korduvate ajavahemike tuvastamine

Anonim

Kui soovite teada saada duplikaatrida, millel on sama isiku jaoks mitu kirjet, ja soovite teada duplikaatkirjeid, siis ärge jätke seda artiklit kasutamata. Anname teile makrokoodi, mis aitab teil duplikaatridu tuvastada. Selles artiklis õpime, kuidas leida konkreetse veeru põhjal dubleeritud ridu.

Küsimus: Mul on arvutustabel, millel on inimeste jaoks mitu ajatempliga kirjet. Need inimesed saavad korraga sisse või välja vaadata mitmes kohas. Proovite kirjutada valemi või makro (pole kindel, mis saavutab sel juhul eesmärgi kõige paremini), mis otsib andmeid ja tõstab punaste joontega esile ajad, mis konkreetse inimese puhul kattuvad. Kas see on võimalik ja kas keegi oskab aidata? Suured tänud.

Algne küsimus on leitav siit

Allpool on ülevaade enne lehte:

Järgnev on järellehe ülevaade:

Koodi saamiseks; peame Visual Basic redaktori ekraani käivitamiseks järgima alltoodud samme

  • Klõpsake vahekaarti Arendaja
  • Valige koodirühmas Visual Basic

  • Kopeerige allolev kood standardmoodulisse
Sub FindOverlapTime () Dim rng As Range, cell As Range, trng As Range, tcell As Range Dim lr As Long lr = Lahtrid (Rows.Count, "A"). End (xlUp) .Rida vahemik ("A2: H" & lr) .Interior.ColorIndex = xlNone Määra rng = Vahemik ("C2: C" & lr) Iga lahtri jaoks rng If Application.CountIf (Vahemik ("C2", lahter), cell.Value)> 1 Seejärel määrake trng = Vahemik ("F2: F" & lahter.Rida - 1) Iga tselluli puhul Trng Kui tcell.Väljund (0, -3) = lahter Siis kui (lahter.Nihke (0, 3)> = tcell ja lahter.Nihke (0, 3) = tcell ja rakk.Nihke (0, 4) <= tcell.Nihke (0, 1)) Siis vahemik ("A" & lahter.Rida & ": H" & lahter.Rida) .Sisene. ColorIndex = 3 Lõpeta, kui lõpp, kui järgmine, t lahtri lõpp, kui järgmine lahtri lõpp Alam 

  • Makro käivitamisel saame tulemuse; vaadake allolevat pilti:

Koodi selgitus:

  • Kuulutage vahemikuks rng, lahter, trng, tcell
  • Lr sama kaua
  • lr = lahtrid (ridade arv, "A"). lõpp (xlUp). Rida kontrollib praeguse lehe viimast rida.
  • Vahemik ("A2: H" & lr) .Interior.ColorIndex = xlNone; see valib vahemiku alates lahtrist A2 kuni H veeruni kuni viimase reani (meie näites valitakse A2: H5) ja tagab, et värvi ei täideta.
  • Määra rng = Vahemik ("C2: C" & lr); veerg C (profiilide ID) salvestatakse rng
  • Iga lahtri jaoks In rng; nüüd käivitame iga rng -i tsükli jaoks, st veeru C
  • Kui Application.CountIf (Vahemik ("C2", lahter), cell.Value)> 1 Siis; see kontrollib, mitu korda lahtri väärtus on suurem kui 1; kui leitakse suurem kui 1, siis
  • Määra trng = Vahemik ("F2: F" & lahter.Rida - 1); nüüd seadistame veeru F, st IN time in trng
  • Järgmisena käivitame iga silmuse jaoks trng -i ja kontrollime, kas seal on duplikaatrida, ja tõstke see punase värviga esile, kui see on leitud.

Järeldus: Sel moel leiame makrokoodi abil duplikaatväärtused ja saame need hiljem eemaldada.

Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile meilisaidile