Macros para pintar celdas repetidas
Macros para colorear y, o resaltar celdas duplicadas en excel
las columnas son "A" Y "E"
2 respuestas
Aclara un poco más qué se tiene que comparar: la col A con respecto a la E ... o un registro se considera repetido cuando coinciden las 2 col en diferentes filas... o tal vez haya alguna otra variante.
Sdos!
No, comparar no, en la columna A no se debe repetir ningún dato.
En la columna E tampoco serian columnas separadas
Esta sería una macro para col A... solo debes repetirla para la otra col.
Estoy considerando que los datos empiezan en fila 2 y el color asignado es rojo.
Sub repetidos() 'x Elsamatilde 'para col A empezando en fila 2 rgo = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Address For Each cd In Range(rgo) cd.Select If Application.WorksheetFunction.CountIf(Range(rgo), ActiveCell.Value) > 1 Then ActiveCell.Interior.ColorIndex = 3 End If Next cd End Sub
Si, en ese caso coloca esta otra macro en el objeto HOJA donde vayas a trabajar.
Private Sub Worksheet_Change(ByVal Target As Range) 'x Elsamatilde 'si se borra el contenido se quita el color If Target.Value = "" Then Target.Interior.ColorIndex = xlNone If Not Intersect(Target, Range("A:A")) Is Nothing Then If Application.WorksheetFunction.CountIf(Range("A:A"), Target) > 1 Then Target.Interior.ColorIndex = 3 End If ElseIf Not Intersect(Target, Range("E:E")) Is Nothing Then If Application.WorksheetFunction.CountIf(Range("E:E"), Target) > 1 Then Target.Interior.ColorIndex = 7 End If End If End Sub
Te quedarán los colores de mi imagen. Para formatear con otros estilos, encendé la grabadora de macros y dale color de fondo y letra a gusto a cualquier celda (que no se repita). Al detener la grabación encontrarás los nros de color para colocar a esta macro.
Sdos.
Elsa
Si tengo en una hoja esta macros y en otra una con buscarv de ingreso de datos al insertarlos me genera error en la macros
Te envié una macro para colorear repetidos... luego solicitaste que sea automática y también te la envié.
¿Ahora me comentas que tenés 2 hojas con procesos distintos y 'genera error en la macros'... de qué macro estamos entonces hablando? ¿Cuál es la que genera error? Y marcame por favor la línea o el mensaje de error.
Sino enviame el libro con las macros y las aclaraciones.
Sdos!
- Compartir respuesta
Te anexo la macro, busca los datos en A en E si lo encuentra, entonces pinta de amarillo la celda de la columna A y también de la E
Sub CeldasRepetidas() 'Por.Dante Amor For i = 1 To Range("A" & Rows.Count).End(xlUp).Row Set b = Columns("E").Find(Cells(i, "A"), lookat:=xlWhole) If Not b Is Nothing Then Cells(i, "A").Interior.ColorIndex = 6 Cells(b.Row, "E").Interior.ColorIndex = 6 End If Next End Sub
S a l u d o s . D a n t e A m o r
Recuerda valorar la respuesta. Gracias
Si le falta algo a la macro, procura poner ejemplos con imágenes de lo que tienes y de lo que esperas como resultado.
Este es el ejemplo las dos columnas son por separado, en la A hay datos repetidos los resalte con el formato condicional al igual que en la E .
Te anexo la macro para las columnas A y E, si quieres que se comparen más columnas, agrega en esta línea de la macro la letra o las letras de las columnas:
cols = Array("A", "E")
Por ejemplo, si quieres que se compare la columna "F", entonces la línea quedaría así:
cols = Array("A", "E", "F")
Sub PintarRepetidos() 'Por.Dante Amor cols = Array("A", "E") ' For c = LBound(cols) To UBound(cols) x = Range(cols(c) & Rows.Count).End(xlUp).Row For i = 1 To Range(cols(c) & Rows.Count).End(xlUp).Row If Cells(i, cols(c)) <> "" Then Set r = Columns(cols(c)) Set b = r.Find(Cells(i, cols(c)), lookat:=xlWhole) If Not b Is Nothing Then ncell = b.Address n = 1 Do If n > 1 Then b.Interior.ColorIndex = 6 Cells(i, cols(c)).Interior.ColorIndex = 6 End If Set b = r.FindNext(b) n = n + 1 Loop While Not b Is Nothing And b.Address <> ncell End If End If Next Next End Sub
S a l u d o s . D a n t e A m o r. Recuerda valorar la respuesta.
Tienes que poner la siguiente macro en los eventos de tu hoja:
Private Sub Worksheet_Change(ByVal Target As Range) 'Por.Dante Amor If Not Intersect(Target, Range("A:A, E:E")) Is Nothing Then cols = Array("A", "E") ' Range("A:A, E:E").Interior.ColorIndex = xlNone For c = LBound(cols) To UBound(cols) x = Range(cols(c) & Rows.Count).End(xlUp).Row For i = 1 To Range(cols(c) & Rows.Count).End(xlUp).Row If Cells(i, cols(c)) <> "" Then Set r = Columns(cols(c)) Set b = r.Find(Cells(i, cols(c)), lookat:=xlWhole) If Not b Is Nothing Then ncell = b.Address n = 1 Do If n > 1 Then b.Interior.ColorIndex = 6 Cells(i, cols(c)).Interior.ColorIndex = 6 End If Set b = r.FindNext(b) n = n + 1 Loop While Not b Is Nothing And b.Address <> ncell End If End If Next Next End If End Sub
Cada que modifiques, borres o agregues un dato en la columna A o E
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- Del lado derecho copia la macro
Recuerda valorar la respuesta.
- Compartir respuesta