En esta ocasión explicaremos una de las formas en que se puede realizar una consulta en una tabla y que regrese múltiples resultados.
La función BuscarX (XLOOKUP) nos devuelve la primera ocurrencia en la tabla, así que si la deseamos utilizar para obtener varios resultados tendríamos que redefinir la tabla para la siguiente búsqueda después de encontrado el primer elemento.
Existe una manera más sencilla para realizarlo.
Supongamos que tenemos una tabla de un club deportivo donde se muestra a los usuarios, con los deportes que practica y el tiempo que le dedica.

Y deseamos que dado el nombre del usuario nos regrese los deportes que práctica. Así, por ejemplo, si damos de entrada Marcos, nos debería regresar Tenis y Basquetbol:

Para lograr la consulta usaremos cinco instrucciones con operaciones matriciales:
- Si (IF), para encontrar los registros de la tabla que cumplen con la condición, en este caso el nombre
- Fila() o ROW() para conocer el numero de fila referenciada.
- Operación matricial {}, para que la operación se repita a lo largo de la tabla.
- K.ESIMO.MENOR (SMALL), para ordenar las filas obtenidas de tal forma que queden separados los datos deseados de los no deseados.
- INDICE (INDEX), Para obtener la información correspondiente a la columna deseada.
- SI.ERROR (IFERROR), Para filtrar las filas con la información correcta.
Procedimiento:
- Definimos la celda para la consulta y el área para los resultados, para nuestro ejemplo, usaremos G1 para la captura del nombre y los resultados los obtendremos de $G$2 en adelante.

- Definimos la consulta para encontrar las filas conteniendo los datos deseados
=SI($A$2:$A$15=$G$1,FILA())
=IF($A$2:$A$15=$G$1,ROW())
E indicamos que será una operación matricial, esto es que se aplique a toda la tabla considerándola como una matriz. Esto se logra con la combinación CTRL+SHIFT+ENTER en la celda con la fórmula.
{=SI($A$2:$A$15=$G$1,FILA())}
{=SI($A$2:$A$15=$G$1,ROW())}

Obtendremos como resultado una lista conteniendo los números de las filas deseadas. El resto con la palabra falso.
- Ahora deberemos ordenar los resultados para dejar al inicio los números y Falso al final. Para ello utilizaremos la función K.ESIMO.MENOR (SMALL) que nos regresa el valor menor deseado de una tabla y que aplicado en una operación matricial da como resultado la tabla ordenada. No olvidando indicar al final que es una operación matricial CTRL+SHIFT+ENTER.
{=K.ESIMO.MENOR(SI($A$2:$A$15=$G$1,FILA()),FILA()-1)}
{=SMALL(IF($A$2:$A$15=$G$1,ROW()),ROW()-1)}

- Ahora encontraremos los resultados deseados, que es la Actividad. Tenemos la fila correspondiente, así que usaremos la función INDICE (INDEX) sobre la columna B, debiendo partir desde la fila 1, pues los resultados que tenemos nos muestran las filas reales. (No olvidando al final indicar que es una operación matricial).
{=INDICE(B1:B15,K.ESIMO.MENOR(SI($A$2:$A$15=$G$1,FILA()),FILA()-1))}
{=INDEX(B1:B15,SMALL(SI($A$2:$A$15=$G$1,ROW()),ROW()-1))}

- Solo falta filtrar las celdas que no regresan resultados deseados. Podemos lograrlo con la instrucción SI.ERROR (IFERROR), colocando “” como retorno en el caso de error.
{=SI.ERROR(INDICE(B1:B15,K.ESIMO.MENOR(SI($A$2:$A$15=$G$1,FILA()),FILA()-1)),»»)}
{=IFERROR(INDEX (B1:B15,SMALL(IF($A$2:$A$15=$G$1,ROW()),ROW()-1)),»»)}

Puedes observar el video con la explicación: