Jeśli chcesz znaleźć zduplikowany wiersz zawierający wiele wpisów dla tej samej osoby i chcesz znaleźć zduplikowane wpisy, nie przegap tego artykułu. Dostarczymy kod makra, który pomoże Ci zidentyfikować zduplikowane wiersze. W tym artykule dowiemy się, jak znaleźć zduplikowane wiersze na podstawie konkretnej kolumny.
Pytanie: Mam arkusz kalkulacyjny z wieloma wpisami ze znacznikami czasu dla osób. Osoby te mogą jednocześnie wchodzić i wychodzić w kilku miejscach. Próba napisania formuły lub makra (nie jestem pewien, które w tym przypadku najlepiej spełnia cel), które przeszuka dane i zaznaczy czerwonymi liniami z czasami nakładającymi się na konkretną osobę. Czy jest to możliwe i czy ktoś mógłby w tym pomóc? Wielkie dzięki.
Oryginalne pytanie można znaleźć tutaj
Poniżej znajduje się migawka przed arkuszem:
Poniżej znajduje się migawka arkusza po:
Aby uzyskać kod; musimy wykonać poniższe kroki, aby uruchomić ekran edytora Visual Basic
- Kliknij kartę Deweloper
- Z grupy Kod wybierz Visual Basic
- Skopiuj poniższy kod w standardowym module
Sub FindOverlapTime() Dim rng As Range, komórka 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 Ustaw rng = Range("C2:C" & lr) Dla każdej komórki In rng If Application.CountIf(Range("C2", cell), cell.Value) > 1 Następnie ustaw trng = Range("F2:F" & cell.Row - 1) For Each tcell In 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
- Gdy uruchomimy makro, otrzymamy wynik; patrz poniżej migawka:
Wyjaśnienie kodu:
- Zadeklaruj rng, cell, trng, tcell jako zakres
- Lr tak długo
- lr = Cells(Rows.Count, "A").End(xlUp).Row sprawdzi ostatni wiersz bieżącego arkusza.
- Zakres("A2:H" & lr).Interior.ColorIndex = xlNone; spowoduje to wybranie zakresu od komórki A2 do kolumny H do ostatniego wiersza (w naszym przykładzie zostanie wybrany A2: H5) i zapewni, że żaden kolor nie zostanie wypełniony.
- Ustaw rng = Zakres("C2:C" & lr); kolumna C (identyfikator profili) będzie przechowywana w rng
- Dla każdej komórki In rng; teraz uruchomimy dla każdej pętli w rng, czyli w kolumnie C
- If Application.CountIf(Range("C2", komórka), komórka.Value) > 1 Then; to sprawdzi, ile razy wartość komórki jest większa niż 1; jeśli znalezione większe niż 1, to
- Ustaw trng = Range("F2:F" & cell.Row - 1); teraz ustawimy kolumnę F tj. IN czas w trng
- Następnie uruchomimy For Each Loop w trng i sprawdzimy, czy istnieje jakiś zduplikowany wiersz i podświetlimy go czerwonym kolorem, jeśli taki znajdzie.
Wniosek: W ten sposób możemy znaleźć zduplikowane wartości za pomocą kodu makra i później je usunąć.
Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail