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