Comparar datos en columnas en Visual Basic

Por favor pueden ayudarme, quiero comparar dos columnas de Excel, de forma que si la celda de la columna C es igual a 0 se ponga de color verde y si la celda de la comuna B es igual a la de la C se ponga en verde, por ejemplo

B   C

0    5       rojo

2    6       blanco

3    3       verde

Un saludo y gracias

El código que escribí es este:

Sub colorear()
'
' color rojo = 0
' color verde = dos columnas iguales


CharKey = 0


'

Range("B2").Select
'Range("C2").Activate
Do While Not IsEmpty(ActiveCell)
'If ActiveCell.value <> CharKey Then
'If (ActiveCell.value = "=RC[+1] - 0") And (ActiveCell.value <> CharKey) Then
' If ActiveCell.value = "=RC[+1]-RC[+0] = 0" Then
' If ActiveCell.value = ActiveCell.value + 1 Then
' If ActiveCell.value = "=ActiveCell.Offset(0, 1).Select" Then
If ActiveCell.value = "COINCIDIR(B;C; 0) > 0" Then

' verde Macro
'

'
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With

ElseIf ActiveCell.value = CharKey Then

' rojo Macro
'

'
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Else
Selection.EntireRow.Hidden = False
End If
ActiveCell.Offset(1).Select
Loop

Selection.EntireRow.Hidden = True
End Sub

1 respuesta

Respuesta
1

¿No me dijiste que lo querías en formato condicional?

Confirma para revisar o no la macro. Ya te envié imágenes de cómo aplicar las reglas y extender los formatos a medida que completas las celdas. También podríamos ajustar la regla para el color verde para que no aplique en caso de celdas vacías y así ya defines el formato para una columna con más filas.

Sdos!

Hola Elsa, gracias de nuevo por la rapidez de la respuesta, :-)

Son respuestas excelentes :-)

La prefería en forma de macro pues creo que con la macro se pueden incluir celdas indefinidamente. Aunque con formato condicional también me arreglaría. Es una buena idea lo de las celdas vacías.

Muchísimas gracias y un fuerte abrazo :-))

Aquí va la macro ajustada. Veo que solo se ejecuta mientras haya datos en B. Solo agrega las líneas para ocultar que como no estaba en la consulta no los incluí.

Sub colorear()
'x Elsamatilde
' color rojo = 0
' color verde = dos columnas iguales
' color amarillo : b < c
Range("B2").Select
Do While Not IsEmpty(ActiveCell)
'solo se aplica color si B no está vacía
If ActiveCell = 0 Then  'color rojo
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 255
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
ElseIf ActiveCell < ActiveCell.Offset(0, 1) Then  'color amarillo
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
ElseIf ActiveCell = ActiveCell.Offset(0, 1) Then  'color verde
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 5296274
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
End If
'pasa a fila siguiente
ActiveCell.Offset(1, 0).Select
Loop
End Sub

También dejo imagen del formato condicional para no incluir las vacías.

Sdos!

¡Gracias! Simplemente genial :-) Funciona a la perfección y me ayuda un montón en el trabajo. :-)

Cheers

Un millón de gracias y un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas