Identificar períodos de tiempo duplicados

Anonim

Si desea averiguar si la fila duplicada tiene varias entradas para la misma persona y desea averiguar las entradas duplicadas, no debe perderse este artículo. Le proporcionaremos un código de macro para ayudarlo a identificar las filas duplicadas. En este artículo, aprenderemos cómo encontrar filas duplicadas según una columna en particular.

Pregunta: Tengo una hoja de cálculo con varias entradas de personas con marca de tiempo. Estas personas pueden fichar su entrada o salida en varios lugares al mismo tiempo. Intentar escribir una fórmula o macro (no estoy seguro de cuál logra mejor el objetivo en este caso) que buscará los datos y los resaltará en líneas rojas con tiempos que se superponen para una persona específica. ¿Es esto posible y es algo en lo que alguien pueda ayudar, por favor? Muchas gracias.

La pregunta original se puede encontrar aquí.

A continuación se muestra la instantánea de la hoja anterior:

A continuación se muestra la instantánea de la hoja posterior:

Para obtener el código; debemos seguir los pasos a continuación para iniciar la pantalla del editor de Visual Basic

  • Haga clic en la pestaña Desarrollador
  • Desde el grupo Código, seleccione Visual Basic

  • Copie el siguiente código en el módulo estándar
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 Establezca rng = Range ("C2: C" & lr) Para cada celda In rng If Application.CountIf (Range ("C2", cell), cell.Value)> 1 Luego Establezca trng = Rango ("F2: F" & cell.Row - 1) Para cada tcell en trng If tcell.Offset (0, -3) = cell Then If (cell.Offset (0, 3)> = tcell And cell.Offset (0, 3) = tcell Y cell.Offset (0, 4) <= tcell.Offset (0, 1)) Luego Rango ("A" & cell.Row & ": H" & cell.Row) .Interior. ColorIndex = 3 End If End If Next tcell End If Next cell End Sub 

  • Mientras ejecutamos la macro, obtendremos el resultado; consulte la siguiente instantánea:

Explicación del código:

  • Declare rng, cell, trng, tcell como rango
  • Lr tanto tiempo
  • lr = Cells (Rows.Count, "A"). End (xlUp). Row comprobará la última fila de la hoja actual.
  • Rango ("A2: H" & lr) .Interior.ColorIndex = xlNone; esto seleccionará el rango comenzando desde la celda A2 hasta la columna H hasta la última fila (se seleccionará A2: H5 en nuestro ejemplo) y asegurará que no se rellene ningún color.
  • Establecer rng = Rango ("C2: C" & lr); la columna C (ID de perfiles) se almacenará en rng
  • Para cada celda en rng; ahora ejecutaremos Para cada bucle en rng, es decir, la columna C
  • If Application.CountIf (Range ("C2", celda), celda.Value)> 1 Entonces; esto comprobará el número de veces que el valor de la celda es mayor que 1; si se encuentra mayor que 1, entonces
  • Establecer trng = Range ("F2: F" & cell.Row - 1); ahora configuraremos la columna F, es decir, el tiempo IN en trng
  • A continuación, ejecutaremos For Each Loop en trng y comprobaremos si hay alguna fila duplicada y la resaltaremos con color rojo si la encontramos.

Conclusión: De esta manera, podemos encontrar valores duplicados usando código de macro y podemos eliminarlos más tarde.

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico