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

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!

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas