Выявление повторяющихся временных рамок
Если вы хотите найти повторяющуюся строку, имеющую несколько записей для одного и того же человека, и вы хотите найти повторяющиеся записи, вам не следует пропустить эту статью. Мы предоставим код макроса, который поможет вам идентифицировать повторяющиеся строки. В этой статье мы узнаем, как найти повторяющиеся строки на основе определенного столбца .
Вопрос: У меня есть таблица с несколькими записями с отметками времени для людей. Эти люди могут приходить или уходить в нескольких местах одновременно. Попытка написать формулу или макрос (не уверен, какой из них лучше всего подходит для достижения цели в данном случае), который будет искать данные и выделять красные линии с временами, которые совпадают для конкретного человека. Возможно ли это, и может ли кто-нибудь помочь? Большое спасибо.
Исходный вопрос можно найти здесь
Ниже приведен снимок предыдущего листа:
Ниже приведен снимок после листа:
Получить код; нам нужно выполнить следующие шаги, чтобы запустить экран редактора 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) For Each cell In rng If Application.CountIf(Range("C2", cell), cell.Value) > 1 Then Set 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.Offset(0, 1)) _ Or (cell.Offset(0, 4) >= 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
изображение: https: //www.office-skill.site/images/wp-content-uploads-2015-07-image-43.png [изображение 4, ширина = 624, высота = 293] * Когда мы запускаем макрос, получим результат; см. снимок ниже:
Пояснение к коду:
Объявите rng, cell, trng, tcell как диапазон Lr как long * lr = Cells (Rows.Count, «A»). End (xlUp) .Row будет проверять последнюю строку текущего листа.
-
Диапазон («A2: H» & lr) .Interior.ColorIndex = xlNone; это выберет диапазон от ячейки A2 до столбца H до последней строки (в нашем примере будет выбран A2: H5) и обеспечит отсутствие заливки цвета.
Установить rng = Range («C2: C» & lr); столбец C (ID профиля) будет сохранен в rng для каждой ячейки In rng; теперь мы будем запускать для каждого цикла в rng, то есть столбца C If Application.CountIf (Range («C2», cell), cell.Value)> 1 Then; это проверит, сколько раз значение ячейки больше 1; если найдено больше 1, установите trng = Range («F2: F» & cell.Row — 1); теперь мы установим столбец F, т.е.
IN time in trng * Затем мы запустим For Each Loop в trng и проверим, есть ли повторяющиеся строки, и выделим их красным цветом, если они найдены.
Заключение: Таким образом, мы можем найти повторяющиеся значения с помощью кода макроса и удалить их позже.
Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]