jueves, 4 de enero de 2018

Marcar coincidencias con formato condicional

Resolveremos hoy un problema de búsqueda de coincidencias múltiples empleando el formato condicional.
La meta del problema de hoy es marcar con algún formato los nombres coincidentes de un listado con una segunda tabla:

Marcar coincidencias con formato condicional



Como se ve en la imagen, en nuestro listado situado en A2:B23, se marcan con un formato establecido aquellos nombres que aparecen en la tabla situada en G1:G3.
Para facilitar el trabajo, la tabla de G1:G3 la hemos renombrado como 'TblNombres', a la cual, ademas le hemos asignado un nombre definido, que responde a:
nombres =TblNombres[Nombres]


Llega el momento de configurar nuestro formato condicional.
Desde la ficha Inicio > grupo Estilos > botón Formato condicional > Nueva regla > Utilice una fórmula que determine las celdas para aplicar un formato, asegurándonos que la celda activa es A2, insertaremos la siguiente fórmula:
=NO(ESERROR(BUSCARV($A2;nombres;1;0)))

y a continuación le daremos algún formato...

Marcar coincidencias con formato condicional



Conseguimos lo esperado... tenemos marcado con algún formato todas aquellas coincidencias con nuestro listado de nombres buscados...

Algo similar aplicando una macro, donde usamos el método .Find sería:

Sub Coincidencia()
'recorremos cada nombre buscado en la tabla
For Each nombre In Range("nombres")
    'buscamos coincidencias en el rango A2:A23
    With Range("A2:A23")
    'localizamos el nombre buscado
    'exigimos la coincidencia en toda la celda...
    Set c = .Find(nombre.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            'si ha habido coincidencia
            'cambiamos el color de las celdas
            Range(c, c.Offset(0, 1)).Interior.Color = vbYellow
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
    End With
Next nombre
End Sub

2 comentarios:

  1. Buenas, tengo una consulta como haria para validar un monto que se encuentre entre dos montos por ejemplo entre 800 y 4000 pero que sean multiplos de 50 utilizando validacion de datos. Muchas gracias por su ayuda de antemano

    ResponderEliminar
    Respuestas
    1. Hola,
      se me ocurre añadir una validación personalizada:
      =Y(celda>=800;celda<=4000;RESIDUO(celda;50)=0)
      debería funcionar
      Saludos

      Eliminar