Identifikace duplicitních časových rámců

Anonim

Pokud chcete zjistit duplicitní řádek s více položkami pro stejnou osobu a chcete zjistit duplicitní položky, pak byste tento článek neměli nechat ujít. Poskytneme kód makra, který vám pomůže identifikovat duplicitní řádky. V tomto článku se naučíme, jak najít duplicitní řádky na základě konkrétního sloupce.

Otázka: Mám tabulku s více záznamy s časovým razítkem pro lidi. Tito lidé mohou vstupovat nebo vystupovat na několika místech současně. Pokoušíte se napsat vzorec nebo makro (nevíte, který v tomto případě nejlépe dosáhne cíle), které prohledá data a zvýrazní červenými čarami s časy, které se pro konkrétní osobu překrývají. Je to možné a může s tím někdo prosím pomoci? Mnohokrát děkuji.

Původní otázku najdete zde

Následuje snímek před listem:

Následuje snímek po listu:

Chcete -li získat kód; pro spuštění obrazovky editoru Visual Basic musíme postupovat podle následujících kroků

  • Klikněte na kartu Vývojář
  • Ze skupiny kódů vyberte Visual Basic

  • Zkopírujte níže uvedený kód do standardního modulu
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 = Rozsah ("F2: F" & cell.Row - 1) Pro každou tcell v trng If tcell.Offset (0, -3) = buňka 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 If next cell End Sub 

  • Když spustíme makro, dostaneme výsledek; viz níže snímek:

Vysvětlení kódu:

  • Deklarujte rozsahy rng, cell, trng, tcell
  • Lr tak dlouho
  • lr = Cells (Rows.Count, "A"). End (xlUp). Row zkontroluje poslední řádek aktuálního listu.
  • Rozsah ("A2: H" & lr) .Interior.ColorIndex = xlNone; tím se vybere rozsah od buňky A2 do sloupce H až do posledního řádku (v našem příkladu bude vybrána A2: H5) a zajistí se, že nebude vyplněna žádná barva.
  • Nastavit rng = Rozsah ("C2: C" & lr); sloupec C (ID profilů) bude uložen v rng
  • Pro každou buňku v rng; nyní spustíme Pro každou smyčku v rng, tj. sloupec C
  • Pokud Application.CountIf (Rozsah ("C2", buňka), cell.Value)> 1 Potom; tím zkontrolujete, kolikrát je hodnota buňky větší než 1; pokud je nalezen větší než 1, pak
  • Nastavit trng = Rozsah ("F2: F" & cell.Row - 1); nyní nastavíme sloupec F tj. IN čas v trng
  • Další spustíme pro každou smyčku v trng a zkontrolujeme, zda existuje nějaký duplicitní řádek, a zvýrazníme jej červenou barvou, pokud je nalezen.

Závěr: Tímto způsobem můžeme pomocí kódu makra najít duplicitní hodnoty a později je můžeme odebrat.

Pokud se vám naše blogy líbily, sdílejte je se svými přáteli na Facebooku. A také nás můžete sledovat na Twitteru a Facebooku.
Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit, doplnit nebo inovovat naši práci a zlepšit ji pro vás. Napište nám na e -mail