Desempaquetar resultado multicolumna de BUSCARX con arrays

Un miembro desde Argentina tiene una fórmula =BUSCARX(A22:A28; A2:A11; E2:G11) que busca varios valores a la vez en un rango de tres columnas (email, teléfono, salario). Pero solo ve la primera columna del resultado — las otras dos desaparecen.

Hugo explica el motivo: BUSCARX con un rango de retorno multicolumna funciona perfecto cuando el valor buscado es una sola celda. Pero cuando pasas un array de búsqueda (A22:A28), Excel no sabe cómo combinar las dos dimensiones (7 filas × 3 columnas) y solo devuelve la primera columna.

Solución con INDICE + COINCIDIRX (Hugo): la alternativa clásica. COINCIDIRX devuelve las posiciones, e INDICE con {1\2\3} selecciona las tres columnas:

``
=INDICE(E2:G11; COINCIDIRX(A15:A21; A2:A11; 0); {1\2\3})
`

Solución con FILTRAR + BYROW + ENFILA (Hugo): enfoque moderno que no requiere especificar el número de columnas manualmente:

`
=FILTRAR(E2:G11; BYROW(--(A2:A11 = ENFILA(A15:A21)); SUMA))
`

ENFILA transpone el array de búsqueda para crear una comparación 2D, BYROW + SUMA la colapsa en un vector booleano, y FILTRAR devuelve las filas completas.

Un caso habitual que recuerda que BUSCARX multicolumna + array de búsqueda no se llevan bien, y que INDICE/COINCIDIRX o FILTRAR` son las alternativas sólidas.

El problema: BUSCARX devuelve solo la primera columna

Un miembro desde Argentina tiene una fórmula que debería traerle tres datos de golpe:

=BUSCARX(A22:A28; A2:A11; E2:G11)

Busca siete valores a la vez y el rango de retorno tiene tres columnas: email, teléfono y salario. Espera una tabla de siete filas por tres columnas. Lo que obtiene es una única columna con los emails. El teléfono y el salario simplemente no aparecen.

No hay error, no hay aviso. La fórmula devuelve un tercio de lo pedido y se queda tan tranquila.

Por qué pasa: dos dimensiones que no caben en una

Hugo da la explicación. BUSCARX sabe devolver varias columnas, y lo hace perfectamente cuando el valor buscado es una sola celda: le pides una fila entera del rango de retorno y te la da completa.

También sabe buscar varios valores a la vez, devolviendo un resultado por cada uno.

Lo que no sabe hacer es las dos cosas al mismo tiempo. Al pasarle siete valores de búsqueda y un retorno de tres columnas, el resultado tendría que ser una tabla de siete por tres, y BUSCARX no está diseñada para expandirse en dos direcciones a la vez. Ante la duda, se queda con la primera columna.

Es una limitación de la función, no un fallo de la fórmula. Y como no avisa, conviene tenerla fichada: búsqueda múltiple y retorno multicolumna no se llevan bien.

Solución 1: INDICE con COINCIDIRX

La alternativa clásica separa las dos tareas. COINCIDIRX se encarga de encontrar las posiciones, e INDICE de extraer lo que hay en ellas:

=INDICE(E2:G11; COINCIDIRX(A15:A21; A2:A11; 0); SECUENCIA(;3))

La clave está en que INDICE acepta matrices en sus dos argumentos de posición. COINCIDIRX le pasa un vector vertical con las siete filas encontradas, y en el argumento de columna le pasamos un vector horizontal con los números 1, 2 y 3.

Al cruzar un vector vertical con uno horizontal, INDICE genera la tabla completa de siete por tres. Es exactamente el comportamiento que le faltaba a BUSCARX.

En el hilo original ese vector horizontal se escribe como una constante matricial. Aquí uso SECUENCIA(;3), que produce lo mismo y tiene una ventaja práctica: si mañana el rango pasa a tener cinco columnas, cambias un número en lugar de reescribir la constante. Con COLUMNAS(E2:G11) en vez del 3 quedaría incluso automático.

Solución 2: FILTRAR con BYROW

Hugo aporta un segundo camino, más de Excel moderno, que ni siquiera necesita saber cuántas columnas hay:

=FILTRAR(E2:G11; BYROW(N(A2:A11 = ENFILA(A15:A21)); SUMA))

Vale la pena desmontarlo por partes, porque el patrón se reutiliza muchísimo:

  • ENFILA(A15:A21) pone los valores buscados en horizontal.
  • Compararlos con la columna vertical A2:A11 produce una matriz de dos dimensiones: cada celda dice si ese registro coincide con ese valor buscado.
  • N convierte esos verdaderos y falsos en unos y ceros.
  • BYROW con SUMA colapsa cada fila a un único número: 1 si el registro está entre los buscados, 0 si no.
  • FILTRAR se queda con las filas cuyo número no es cero, enteras, con sus tres columnas.

La diferencia importante respecto a INDICE: aquí las columnas vienen solas, porque FILTRAR nunca ha filtrado columnas, filtra filas completas. Añade una columna al rango y la fórmula sigue funcionando sin tocarla.

Cuál elegir

No son intercambiables del todo, y la diferencia decide por ti:

  • INDICE con COINCIDIRX respeta el orden de la lista de búsqueda y admite repetidos: si pides el mismo valor dos veces, sale dos veces. Es lo que quieres cuando estás rellenando una plantilla con un orden dado.
  • FILTRAR con BYROW devuelve las filas en el orden de la tabla origen, y cada coincidencia una sola vez. Es lo que quieres cuando lo que buscas es "dame los registros de esta lista", sin importar el orden.

Si tu lista de búsqueda es una plantilla que hay que rellenar en su orden, INDICE. Si es un conjunto de registros que quieres extraer, FILTRAR.

Funciones clave

  • BUSCARX — devuelve varias columnas solo con un valor de búsqueda único. Con un array de búsqueda se queda en la primera columna.
  • COINCIDIRX — devuelve posiciones, y acepta un array de valores buscados.
  • INDICE — con matrices en fila y columna genera la tabla cruzada completa.
  • SECUENCIA — genera el vector de números de columna sin escribir constantes a mano.
  • ENFILA — reorienta un vector a horizontal para provocar la comparación cruzada.
  • BYROW — colapsa la matriz resultante a un valor por fila.
  • FILTRAR — devuelve filas completas, así que las columnas se conservan solas.

Conclusión

Cuando BUSCARX te devuelva menos columnas de las que esperabas, no busques el error en el rango: la fórmula está bien, es la función la que no cubre ese caso.

A partir de ahí, INDICE con COINCIDIRX si te importa el orden, FILTRAR con BYROW si te importa la flexibilidad. Ambas son sólidas y ambas escalan mejor que la original.

Estos límites poco documentados de las funciones son de lo que más se aprende en los casos de la comunidad de InflueXcel: no aparecen en la ayuda, aparecen cuando alguien se los encuentra de frente.

Más casos con estas funciones

Más contenido de Excel en InflueXcel