¿cómo resaltar valores duplicados con vba?

Cuando se trabaja con datos de gran tamaño, los valores duplicados siempre son un problema. La mayoría de las veces uso la opción eliminar duplicados para eliminar todos estos valores. Y estoy seguro de que tú haces lo mismo.

Pero eliminar estos valores duplicados o simplemente contarlos nunca soluciona el problema. Lo importante es examinar todos los valores duplicados antes de eliminarlos.

Sí, es verdad. Una vez que haya resaltado todos estos valores, puede verificarlos y luego eliminarlos. Hoy en este artículo, me gustaría compartir con ustedes 4 códigos VBA diferentes para resaltar valores duplicados.

Y es que estos códigos pueden resaltar celdas de diferentes formas. Simplemente puedes copiarlos y pegarlos en tu editor VBA y usarlos.

1. En cada línea

Este código VBA verifica todas las celdas seguidas y resalta todas las celdas que están duplicadas en una fila. En términos simples, si una fila tiene el valor «522» dos veces, se considerará duplicada. Pero si los otros 522 están en otra fila, se considerará único.

resaltar valores duplicados de cada fila usando código VBA
 Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

Si observa esta macro, verá que usamos un bucle para verificar cada fila en busca de valores duplicados y resaltarlos con un color.

Puntos importantes

  1. Sus datos no deben contener una fila o columna en blanco; de lo contrario, ignorará esa celda.
  2. La celda inicial de sus datos debe ser la celda «A1». Y si desea ajustar el punto de partida, debe ajustar el código.
  3. La primera fila y la primera columna de su hoja de datos deben ser encabezados.

2. En cada columna

Este código VBA verifica todas las celdas de una columna y resalta todas las celdas que están duplicadas en cada columna. En términos simples, si una columna tiene el valor «231» dos veces, se considerará duplicada. Pero si hay otro “231” en otra columna, se considerará único.

resaltar valores duplicados de cada columna usando código VBA
 Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

3. En la selección

Supongamos que solo desea resaltar celdas con valores duplicados de la selección, este código puede ayudarlo. Para usar este código, simplemente seleccione un rango de celdas y ejecute este código. Comprueba cada celda con la selección y la resalta en rojo si una celda tiene un valor duplicado.

resaltar valores duplicados de la selección usando código VBA
 Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

4. datos enteros

Si tiene un conjunto de datos grande, puede usar este código de macro para verificar la integridad de los datos y resaltar los valores duplicados. Este código recorre cada celda una por una y aplica el color rojo a todas las celdas que están duplicadas.

 Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

Nota importante: en el código anterior hemos utilizado el nombre de tabla «Tabla1», puede cambiar este nombre desde el código. Ahora, si tiene un rango, puede usar simplemente el nombre del rango.

[Consejo adicional] Cuente los valores duplicados

Este código le ayuda a contar la cantidad de valores duplicados de la selección. Cuando ejecuta este código, devuelve un cuadro de mensaje que muestra el número.

 Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub

Nuevamente en el código anterior hemos usado un nombre de tabla y usted lo cambia o reemplaza con un rango.

Archivo de ejemplo

Descargue este archivo de muestra aquí para obtener más información.

Conclusión

En diferentes situaciones, debemos verificar si hay valores duplicados de diferentes maneras. Y todos los códigos anteriores pueden resultarle útiles a este respecto. Si lo desea, puede cambiar el color de resaltado de los códigos utilizando el número de índice de color.

Ahora ayúdame con una cosa.

¿Dónde podemos mejorar estos códigos?

Comparta sus pensamientos conmigo en la sección de comentarios, me encantaría saber de usted. Y no olvides compartir este consejo con tus amigos.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *