Ако искате да откриете дублиращия се ред с множество записи за едно и също лице и искате да откриете дублирани записи, тогава не бива да пропускате тази статия. Ще ви предоставим макро код, който да ви помогне да идентифицирате дублиращите се редове. В тази статия ще научим как да намираме дублирани редове въз основа на конкретна колона.
Въпрос: Имам електронна таблица с записи с множество времеви маркировки за хора. Тези хора могат да влизат или излизат на няколко места едновременно. Опитва се да напише формула или макрос (не съм сигурен кое най -добре постига целта в този случай), което ще търси данните и ще маркира в червени линии с времена, които се припокриват за конкретен човек. Възможно ли е това и може ли с нещо някой да помогне? Много благодаря.
Оригиналният въпрос може да бъде намерен тук
Следва моментната снимка на предишния лист:
Следва моментната снимка на следния лист:
За да получите кода; трябва да следваме стъпките по -долу, за да стартираме редакторския екран на Visual Basic
- Кликнете върху раздела Разработчик
- От групата Кодове изберете Visual Basic
- Копирайте кода по -долу в стандартния модул
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) За всяка клетка In rng If Application.CountIf (Range ("C2", cell), cell.Value)> 1 Тогава задайте trng = Диапазон ("F2: F" & клетка. Ред - 1) За всяка tcell В trng Ако tcell.Offset (0, -3) = клетка Тогава 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
- Докато изпълняваме макроса, ще получим резултата; вижте моментната снимка по -долу:
Код Обяснение:
- Обявете rng, cell, trng, tcell като диапазон
- Lr толкова дълго
- lr = Клетки (Rows.Count, "A"). End (xlUp) .Row ще провери последния ред на текущия лист.
- Range ("A2: H" & lr) .Interior.ColorIndex = xlNone; това ще избере диапазон, започващ от колона A2 до колона H до последния ред (A2: H5 ще бъде избран в нашия пример) и ще гарантира, че няма цвят.
- Задайте rng = Обхват ("C2: C" & lr); колона C (Идент. № на профилите) ще се съхранява в rng
- За всяка клетка В rng; сега ще стартираме За всеки цикъл в rng, т.е. колона C
- Ако Application.CountIf (Range ("C2", клетка), cell.Value)> 1 Тогава; това ще провери колко пъти стойността на клетката е по -голяма от 1; ако е установено по -голямо от 1, тогава
- Set trng = Range ("F2: F" & cell.Row - 1); сега ще зададем колона F, т.е. IN време в trng
- Следващото ще стартираме For Each Loop в trng и ще проверим дали има дублиращ се ред и го маркираме с червен цвят, ако го открием.
Заключение: По този начин можем да намерим дублирани стойности с помощта на макрокод и да ги премахнем по -късно.
Ако ви харесаха нашите блогове, споделете го с приятелите си във Facebook. Можете също така да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим, допълним или обновим работата си и да я подобрим. Пишете ни на имейл сайта