martes, 12 de diciembre de 2017

Localizar última visita condicionada

Leyendo el título del post puede resultar una pregunta algo 'rara', pero tiene bastante sentido...
Se trata, a partir de un listado de los registros de visitas a nuestros clientes, en qué casos (para qué clientes) han pasado más de seis días desde la última visita.
Supongamos el siguiente listado de registros de visitas, sabiendo que la fecha de hoy es 12/12/2017:

Localizar última visita condicionada



Se observa que tenemos marcadas con color aquellos clientes donde su última visita, respecto al día de hoy, fue superior a los seis días (plazo relevante para nuestro estudio).
Comprobamos como para los clientes E, B y A con fechas de última visita 06/12/2017, 08/12/2017 y 11/12/2017 respectivamente, no exceden de esos seis días estipulados...


El trabajo para conseguir esto es doble, por un lado, componer y crear unas fórmulas matriciales que incorporaremos a unos nombres definidos:
check =(HOY()-fecha)>6
fecha =MAX(SI(Hoja3!$B$3:$B$29=Hoja3!$B3;Hoja3!$C$3:$C$29;0))

Nota: importante que la celda activa esté en la fila 3!!

y por otro lado, seleccionar el rango completo de datos (B3:C29) donde aplicaremos una regla de formato condicional con la siguiente fórmula:
=Y(check;$C3=fecha)
apoyándonos en los nombres definidos anteriores...



Con lo que queda solucionada nuestra búsqueda.

la clave de este problema es el uso matricial que se hace de fórmulas dentro de los nombres definidos.
En concreto, la fórmula
=MAX(SI(Hoja3!$B$3:$B$29=Hoja3!$B3;Hoja3!$C$3:$C$29;0))
ejecutada matricialmente devolverá para cada fila/cliente la última fecha (la fecha mayor)...esta fecha la emplearemos con el segundo nombre definido para saber si respecto al día actual han transcurrido más de seis días:
=(HOY()-fecha)>6
En conjunto, finalmente dentro del formato condicional se evalúa si es cierto que han pasado más de seis días y si estamos en el caso de ser última fecha de ese cliente...

2 comentarios:

  1. Hola. No veo la manera en la que introduces las fórmulas como matriciales. Cómo las pones matriciales? Directamente desde Fórmulas, Administrador de nombres?
    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Ivám,
      se indica en el post:
      'componer y crear unas fórmulas matriciales que incorporaremos a unos nombres definidos'
      Esto es, accedes a los Nombres definidos (al Administrador de nombres) y se crean dos nombres definidos nuevos añadiendo las fórmulas indicadas
      check =(HOY()-fecha)>6
      fecha =MAX(SI(Hoja3!$B$3:$B$29=Hoja3!$B3;Hoja3!$C$3:$C$29;0))

      Saludos

      Eliminar