miércoles, 19 de octubre de 2011

Encontrar fechas con matriciales.

Hoy recuperaremos nuestra matriciales para encontrar un dato dentro de una Tabla que cumpla varios requisitos al tiempo. Se trata de localizar la primera fecha que corresponda al último trabajo desarrollado por cada empleado de un listado:

...Imaginemos que tenemos una lista de Nombres, (en el ejemplo pongo dos, Pepe (25) y Paco (50) pero pueden ser muchos más). Todos ellos tienen un histórico con los puestos que han ocupado en sus trabajos, con la fecha de inicio y los centros en los que han trabajado.
Lo que yo necesito es, (y está en rojo). Sacar un listado con el nombre y LA FECHA EN LA QUE EMPEZÓ EN SU ÚLTIMO PUESTO. Por ejemplo; Pepe es Cocinero desde 01/05/2004 y Paco es arquitecto desde 01/04/2007.
Necesito una fórmula que discrimine el resto de fechas y solo tenga en cuenta la fecha en la que comenzaron su trabajo y sigan actualmente en el mismo....



Asignamos nombres a los diferentes campos del listado:
centro =Hoja1!$E$2:$E$12
Fecha =Hoja1!$D$2:$D$12
ID =Hoja1!$A$2:$A$12
Nombre =Hoja1!$B$2:$B$12
Profesion =Hoja1!$C$2:$C$12

Fijémosnos en que las condiciones son tres, la primera por ID de empleado, la segunda por Profesión desarrollada y la tercera que deberá ser la menor de las fechas de la última Profesión desarrollada.
La clave de la función matricial que vamos a implementar es encontrar en primer lugar la última Profesión desarrollada de cada empleado, esto lo lograríamos con una matricial (Ctrl+Mayus+enter) de este tipo:
{=MAX(SI(ID=G2;Fecha))}
que nos dice la última Fecha en la que comenzó alguna Profesión; si anidamos esta Fecha en una función INDICE obtendremos la última Profesión:
{=INDICE(Profesion;COINCIDIR(MAX(SI(ID=G2;Fecha));Fecha;0))}
para el empleado con ID igual al valor de la celda G2, buscamos la última fecha, para luego encontrar la correspondencia sobre el rango Profesión.
Acabamos con la matricial:
{=MIN(SI(Profesion=INDICE(Profesion;COINCIDIR(MAX(SI(ID=G2;Fecha));Fecha;0));Fecha))}
que buscará la menor de las fechas para el empleado con el ID buscado (G2) con la última profesión desarrollada. Precisamente lo que buscábamos... independientemente del orden dado para los empleados.


haz click en la imagen

2 comentarios:

  1. Hola excelforo
    Si no es molestia quisiera saber si en J2 meda la fecha 01/05/2004, como puedo hacer para que me de el centro, en esta caso sería centro2 me refiero a fecha de inicio.
    muchas gracias
    Saludo Ángel

    ResponderEliminar
    Respuestas
    1. Hola Angel,
      eso sería más sencillo, no sería necesario emplear matriciales.
      Simplemente con una función:
      =INDICE(E2:E12;COINCIDIR($J$2;D2:D12;0))
      debería darte ese valor, para el ejemplo con J2=01/05/2004, 'centro2'.
      Slds

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.