CASO RESUELTO: ENCONTRAR EL ULTIMO VALOR DE UNA LISTA

En esta ocasión vamos a ver una manera de romper la limitación que tiene BUSCARV para devolver un valor que no sea el primero que le damos de una lista. Supongamos que tenemos la siguiente lista y queremos encontrar el segundo registro del empleado 8.

Normalmente usaríamos un BUSCARV para encontrar un valor, lo cual no seria incorrecto si no tuviéramos la necesidad de encontrar el valor de empleado 8 que se encuentra en la ultima parte de la tabla.

último valor sin BuscarV 2

¿Cómo resolvemos esto?

Bueno, la pregunta le rompería la cabeza a mas de uno de tus colegas, pero nosotros somos los mejores y haremos algo que lo dejara con la boca abierta (y posiblemente a nosotros al inicio también).

{=INDICE(Tabla1[valor],MAX(FILA(Tabla1[Titulo])*(Tabla1[Titulo]=F3))-FILA(Tabla1[#Encabezados]),1)}

Vamos por partes:

FILA(Tabla1[Titulo]) nos va a generar una matriz con los números de fila en los que se localizan los valores en la tabla (en este caso, el primer valor se encuentra en la fila 3, luego 4, luego 5… luego 30). algo así

{3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30}

FILA(Tabla1[Titulo])*(Tabla1[Titulo]=F3) multiplicara por un valor VERDADERO – FALSO la matriz de la primera parte de la formula.

{FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;VERDADERO;FALSO;FALSO;
FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO;
FALSO;VERDADERO;FALSO;FALSO;FALSO;FALSO;FALSO;FALSO}

Estos valores booleanos se generarán según se cumpla el criterio de coincidencia =F3 (o igual a empleado 8). El resultante sería este.

{3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30}*{FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;VERDADERO;FALSO;
FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;FALSO=VERDADERO;FALSO;
FALSO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO;FALSO;FALSO;FALSO}

={0;0;0;0;0;0;0;10;0;0;0;0;0;0;0;0;19;0;0;0;0;24;0;0;0;0;0;0}

FILA(Tabla1[Titulo])*(Tabla1[Titulo]=F3))-FILA(Tabla1[#Encabezados]) restara el valor del numero de fila en el que se encuentre nuestro encabezado de tabla (en este caso nuestro encabezado de tabla se encuentra en la fila 2) para que la matriz de búsqueda no empiece a realizar la coincidencia desde el valor real de filas sino desde el valor real de la matriz de búsqueda (ósea, en nuestro caso seria tomando como fila de búsqueda 1 la fila 3).

=MAX({0;0;0;0;0;0;0;10;0;0;0;0;0;0;0;0;19;0;0;0;0;24;0;0;0;0;0;0}-{2})=22

{=INDICE(Tabla1[valor],todo_lo_anterior),1) genera una consulta de búsqueda matricial en las columnas valor de la tabla y usa el numero que devuelve la función MAX para encontrar la coincidencia de filas.

El resultado queda más o menos así:

último valor sin BuscarV 1

¡Ese si es el resultado que queríamos! La técnica puede resultar complicada, pero con un poco de esfuerzo y practica puede ayudarte a resolver muchos problemas. Si quieres ver como funciona descarga el libro por aquí.

Solo queda una pregunta en el aire: MAX nos devolverá el ultimo valor y BUSCARV nos devolverá el primero, entonces ¿si quisiéramos el valor intermedio? La respuesta la encontraran por aquí, pero si puedes darla antes, déjala en los comentarios. ¿Qué más se te ocurre?

CASO RESUELTO: ENCONTRAR EL ULTIMO VALOR DE UNA LISTA
Scroll hacia arriba