La identificación de los marcos de tiempo duplicados
Si desea descubrir la fila duplicada que tiene varias entradas para la misma persona y desea encontrar 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 con lo que alguien podría 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 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
imagen: https: //www.office-skill.site/images/wp-content-uploads-2015-07-image-43.png [imagen 4, ancho = 624, alto = 293] * 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 mientras * lr = Cells (Rows.Count, «A»). End (xlUp) .Row verificará la última fila de la hoja actual.
-
Rango («A2: H» & lr) .Interior.ColorIndex = xlNone; esto seleccionará el rango desde la celda A2 hasta la columna H hasta la última fila (se seleccionará A2: H5 en nuestro ejemplo) y asegurará que no se llene ningún color.
Establecer rng = Rango («C2: C» & lr); la columna C (ID de perfiles) se almacenará en rng Para cada celda In rng; ahora ejecutaremos Para cada bucle en rng, es decir, columna C If Application.CountIf (Range («C2», cell), cell.Value)> 1 Then; esto verificará el número de veces que el valor de la celda es mayor que 1; si se encuentra mayor que 1, entonces Set trng = Range («F2: F» & cell.Row – 1); ahora configuraremos la columna F, es decir,
IN time 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 forma, podemos encontrar valores duplicados usando código 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 a [email protected]