MACRO para colorear/comparar datos de 2 columnas de una misma excel.

Espero explicarme bien.

La idea es la siguiente:

  1. Comparar, de un mismo excel, unas columnas en concreto, por ejemplo la D y la E.
  2. Resaltar las columnas duplicadas (tienen que coincidir tanto D como E) con un color y, si es posible, mostrar solo las columnas (junto con su fila) coloreadas.

La siguiente macro debería:

  1. De estas columnas que están duplicadas, comparar una tercera columna y eliminar la de valor inferior (es columna de texto con número).

2 Respuestas

Respuesta

Prueba la siguiente macro para poner las celdas en amarillo:

Sub compara2columnas()
  Dim c As Range, rng As Range
  Set rng = Range("D2", Range("D" & Rows.Count).End(3))
  For Each c In rng
    If WorksheetFunction.CountIfs(rng, c.Value, rng.Offset(, 1), c.Offset(, 1).Value) > 1 Then c.Resize(1, 2).Interior.Color = vbYellow
  Next
End Sub

Para esta parte:

"Una vez coloreadas estas columnas, mirar de sus filas, en una columna F, por ejemplo, si existe "X" valor/palabra, y coloreamos de rojo la que no tenga este valor."

Podrías ponerlo en un ejemplo.

Respuesta

Debieras dejar una imagen como lo estoy haciendo yo ahora, para tener más clara tu consulta.

Aquí estoy comparando las col D con E... Pero no se entiende esto de (tienen que coincidir tanto D como E)

¿Y por esta coincidencia debiera colorear las 2 columnas?

Quedo atenta a tus aclaraciones... pero CON imagen donde se vean los encabezados de fila y col (los datos cualquiera).

Buenos días,

Sin problema te adjunto la imagen:

  • En este ejemplo, por ejemplo MARZO tiene 2 valores (cualquiera) en columna D y E. Coincide con NOVIEMBRE en AMBOS VALORES. 
  • JUNIO y OCTUBRE también coinciden. Entonces, coloreamos las columnas DyE(la fila) que en algún dato del rango D - E, coincidan ambos valores. 
  • Si fuese que MARZO la columna E vale 100, entonces no se colorearían ni MARZO ni NOVIEMBRE, ya que no coinciden en D y E.
  • En cambio si E de MARZO vale 50, se colorearían MARZO y ABRIL.

No se si he conseguido explicarme bien.

La 2a parte del MACRO he pensado en otra cosa:

  1. Una vez coloreadas estas columnas, mirar de sus filas, en una columna F, por ejemplo, si existe "X" valor/palabra, y coloreamos de rojo la que no tenga este valor.

Si necesitas más datos estaré encantado de aclararlo.

Un saludo y gracias!

La macro queda desarrollada para datos mostrados en tu imagen. Ahora te toca trabajar un poco acomodando las referencias a tu modelo real.

Dejo comentarios en cada línea. Filas y columnas deben ser ajustadas si no coinciden con tu modelo.

Sub coloreaDuplicados()
'x Elsamatilde
'quita posibles filtros
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
'fin de rango según col D
x = Range("D" & Rows.Count).End(xlUp).Row
'colocar formula en col auxiliar H
[H1] = "Auxiliar"
'Atención que la fórmula hace mención a la col D a partir de H, o sea [-4] ... ajusta al modelo
Range("H2").FormulaR1C1 = "=COUNTIFS(R2C4:R" & x & "C4,RC[-4],R2C5:R" & x & "C5,RC[-3])"
'arrastrar la fórmula hasta el final
Range("H2").AutoFill Destination:=Range("H2:H" & x)
'filtrar la col auxiliar x valores > 1
ActiveSheet.Range("$H$1:$H$" & x).AutoFilter Field:=1, Criteria1:=">1", _
        Operator:=xlAnd
'pintar cada elemento filtrado
For Each cd In Range("D2:D" & x).SpecialCells(xlCellTypeVisible)
    Range(Cells(cd.Row, 4), Cells(cd.Row, 5)).Interior.ColorIndex = 4
Next cd
'quitar filtros
ActiveSheet.ShowAllData
'eliminar col auxiliar
[H1].EntireColumn.Clear
End Sub

Con respecto a la segunda macro..... una vez finalizada ésta. Aclarando cómo le indicarás a Excel qué palabra buscar (estará en alguna celda? la pedirás desde un cuadro InputBox? ..). Además qué celdas debe colorear de rojo: D y E siguiendo este hilo o toda la fila o todo el rango de la fila ?

Sdos!

Así es cómo se verá... el color es a gusto. Este es el n° 4 y la col H se borra al finalizar la macro.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas