Problema con color fijo en macro excel

Tengo una macro que busca coincidencias de un numero de 4 cifras en una hoja y a aquellas celdas que coincide las marca en color naranja el problema es que tengo ciertas filas con color amarillo fijas y al ejecutar la búsqueda de coincidencias me borra el color de las filas del color amarillo también, como puedo hacer para que cada vez que realice la búsqueda me deje el color amarillo de mis filas quietas pero aun así si encuentra coincidencias en las celdas de las filas amarillas las marque igual que las otras

el rango de la macro de coincidencias es de "F1; S66" y mis filas de color amarillo tienen una secuencia asi "f1;s1","f6;s6","f11;s11","f12;s12","f17;s17"......................................"f67;s67" 

1 Respuesta

Respuesta
2

La macro que tenías iba de 5 en 5 pero tus filas amarillas no siguen ese orden.

Entonces, esta propuesta mira el color de la col E. Como allí no hay valores sirve para mirar el color. Si es amarillo vuelve a colocar ese color en el resto de la fila.

Sub coincidencias()
'ajustada x Elsamatilde
Dim n As Range
Dim lookup
ElRango = "E1:T67"
'se solicita ingreso del nro de 4 dígitos
lookup = Format(Val(InputBox("ingrese NUMERO de referencia", "BUSQUEDA DE COINCIDENCIAS")), "0000")
If Val(lookup) = 0 Then
    Columns("Y:Y").Clear
    [Z1].ClearContents
    For LaFila = 1 To Range(ElRango).Rows.Count 'Step 5
        'si la celda en col E es amarilla se deja la fila en amarillo
        If Range("E" & LaFila).Interior.ColorIndex = 6 Then
            'se asigna color 6 a la fila completa, no x col
            Range("E" & LaFila & ":T" & LaFila).Interior.ColorIndex = 6
            'For LaColu = 0 To Range(ElRango).Columns.Count - 1
               'Range("E1").Offset(LaFila, LaColu).Interior.ColorIndex = 6
            'Next
        Else
            'sino se le quita el color que tenga de la coincidencia
            Range("E" & LaFila & ":T" & LaFila).Interior.ColorIndex = xlNone
        End If
    Next
    Exit Sub
Else
    If Len(lookup) <> 4 Then
        MsgBox "Número no válido.", , "ERROR"
        Exit Sub
    End If
End If
'se guarda en Z1 y se da formato a la celda
With [Z1]
    .Value = lookup
    .NumberFormat = "0000"
    .Font.Bold = True
    .HorizontalAlignment = xlLeft
    .Interior.ColorIndex = 44     '(naranja)
End With
'se recorre el rango buscando las 6 coincidencias
'se limpia la col Y
Columns("Y:Y").Clear
x = 2
For Each n In Range(ElRango)
    If n = lookup Or Left(n.Value, 2) = Left(lookup, 2) Or Right(n.Value, 2) = Right(lookup, 2) Or _
        (Left(n.Value, 1) = Left(lookup, 1) And Right(n.Value, 1) = Right(lookup, 1)) Or _
        (Left(n.Value, 1) = Left(lookup, 1) And Mid(n.Value, 3, 1) = Mid(lookup, 3, 1)) Or _
        (Mid(n.Value, 2, 1) = Mid(lookup, 2, 1) And Right(n.Value, 1) = Right(lookup, 1)) Or _
        (Mid(n.Value, 2, 1) = Mid(lookup, 2, 1) And Mid(n.Value, 3, 1) = Mid(lookup, 3, 1)) Then
            n.Interior.ColorIndex = 5   'azul
            'se agrega el nro a la col Y
            Range("Y" & x) = n
            x = x + 1
    Else   'opcional quitar color a los no coincidentes.
        'n.Interior.Color = xlNone
    End If
Next n
MsgBox "Fin del proceso.", , "INFORMACIÓN"
End Sub

Probala y me comentás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas