Por qué ELEGIRFILAS falla con índices vacíos o erróneos
Un miembro de la comunidad comparte un problema que a muchos nos ha dado algún dolor de cabeza: intenta usar SI.ND() para manejar errores en una fórmula con ELEGIRFILAS, pero sigue obteniendo errores #VALOR. El problema de fondo es que ELEGIRFILAS es una función "todo o nada": si cualquier índice del array es inválido (vacío, 0 o error), toda la función devuelve error, sin importar que el resto de índices sean correctos.
La comunidad propone varias alternativas según el enfoque:
Solución con BUSCARX (Leo): la más directa, ya que realmente se trata de un problema de búsqueda. Usando el 4º argumento para manejar valores no encontrados:
``
=BUSCARX(K12:K15; L3:L6; K3:K6; "no encontrado")
`
Solución con MAP + LAMBDA (Nacho): envuelve ELEGIRFILAS dentro de MAP para evaluar cada índice individualmente, atrapando el error con SI.ERROR:
`
=MAP(G3#; LAMBDA(x; SI.ERROR(ELEGIRFILAS(D12:D13; x); "")))
`
Explicación técnica y alternativas (John): explica por qué ELEGIRFILAS falla — no tolera ningún índice inválido en el array. Propone un workaround sustituyendo los índices problemáticos por un valor válido (1) y luego limpiando el resultado:
`
=SI(G3#=""; ""; ELEGIRFILAS(D3:D6; SI(G3#=""; 1; G3#)))
`
Y una alternativa más limpia usando CONTAR.SI:
`
=SI(CONTAR.SI(B12:B13; C3:C6); D3:D6; "")
`
Recomendación general (Gerson): cuando el objetivo es buscar un valor en una tabla, BUSCARX es la herramienta adecuada. ELEGIRFILAS` está pensada para seleccionar filas por posición, no para búsquedas. Elegir la función correcta simplifica mucho la fórmula.
El caso es un buen ejemplo de cómo entender las limitaciones de cada función lleva a soluciones más elegantes.
El problema: capturas el error y el error sigue ahí
Un miembro de la comunidad llegó al grupo con una situación que desespera: tenía una fórmula con ELEGIRFILAS, le salía un error de valor, y la envolvió con la función que captura errores de tipo "no disponible" para limpiarlo. No sirvió de nada. El error seguía apareciendo.
La causa no era la función de captura. Era una característica de ELEGIRFILAS que conviene tener muy presente:
ELEGIRFILAS es una función de todo o nada. Si le pasas un array de índices y uno solo de ellos es inválido (vacío, cero o un error), la función entera devuelve error. Da igual que los otros nueve estén perfectos. No devuelve una matriz con nueve resultados buenos y un error; devuelve un único error para todo.
Por eso capturar el error por fuera no arregla nada: no hay nada que salvar dentro. Cuando el resultado ya es un error único, lo único que puedes hacer es sustituirlo entero por otra cosa.
Entendido eso, la solución pasa por evitar que el índice inválido llegue a ELEGIRFILAS, o por no usar ELEGIRFILAS en absoluto. La comunidad propuso las dos vías.
Solución 1: BUSCARX, la que probablemente querías desde el principio
Leo fue directo al grano: si lo que estás haciendo es buscar valores en una tabla, ELEGIRFILAS no es la herramienta.
=BUSCARX(K12:K15; L3:L6; K3:K6; "no encontrado")BUSCARX tiene un cuarto argumento pensado exactamente para esto: qué devolver cuando no encuentra la coincidencia. Y a diferencia de ELEGIRFILAS, trabaja elemento a elemento: si buscas cuatro valores y uno no aparece, obtienes tres resultados buenos y un "no encontrado" en su sitio.
Una línea, sin capturas de error, sin trucos. Cuando encaja, esta es la respuesta.
Solución 2: MAP para evaluar índice a índice
A veces sí necesitas ELEGIRFILAS de verdad, porque estás seleccionando filas por posición y no buscando valores. En ese caso, Nacho propone romper el "todo o nada" evaluando cada índice por separado:
=MAP(G3#; LAMBDA(x; SI.ERROR(ELEGIRFILAS(D12:D13; x); "")))MAP recorre el rango derramado de índices y ejecuta el LAMBDA una vez por cada uno. Dentro, ELEGIRFILAS recibe un único índice, así que si ese índice concreto falla, solo falla esa llamada. SI.ERROR la convierte en cadena vacía y el resto sigue funcionando.
Es el patrón general para convertir cualquier función de todo o nada en una función tolerante: si no aguanta un array, dásela de uno en uno con MAP.
Solución 3: sanear los índices antes de pasarlos
John explicó el porqué del fallo y propuso el enfoque contrario: en vez de evaluar de uno en uno, arreglar el array de índices para que no contenga nada inválido.
=SI(G3#=""; ""; ELEGIRFILAS(D3:D6; SI(G3#=""; 1; G3#)))El SI interior sustituye cada índice vacío por un 1, que siempre es válido. Así ELEGIRFILAS recibe un array limpio y devuelve resultados para todo. El SI exterior se encarga de tapar con cadena vacía las posiciones que correspondían a los índices que habíamos falseado.
Es un poco de trampa (calculas resultados que luego tiras), pero es rápido y evita el coste de MAP cuando el array es grande.
John apuntó además una alternativa más limpia para el caso concreto de "devuélveme el valor solo si la clave existe":
=SI(CONTAR.SI(B12:B13; C3:C6); D3:D6; "")CONTAR.SI devuelve el número de coincidencias, y cualquier número distinto de cero se comporta como verdadero dentro del SI. Sin errores que capturar, porque nunca llegan a producirse.
La recomendación de fondo
Gerson cerró el hilo con la reflexión más útil: elige la función que corresponde a lo que estás haciendo.
BUSCARXestá pensada para buscar un valor en una tabla y traer el correspondiente de otra columna. Tolera que no haya coincidencia, por diseño.ELEGIRFILASestá pensada para seleccionar filas por posición. Asume que las posiciones que le das existen, porque en su caso de uso normal las calculas tú.
Cuando el problema es de búsqueda y usas una función de selección, acabas peleándote con errores que en realidad son la función avisándote de que la estás usando fuera de su terreno. Cambiar de función simplifica la fórmula y hace que los errores desaparezcan solos.
Funciones clave
ELEGIRFILAS— selecciona filas por posición; falla entera si cualquier índice es inválido.BUSCARX— busca valores con un argumento dedicado para el caso "no encontrado"; trabaja elemento a elemento.MAPconLAMBDA— evalúa uno a uno, convirtiendo funciones de todo o nada en tolerantes a fallos.SI.ERROR— captura el error de una llamada individual, que es donde de verdad sirve.CONTAR.SI— comprobación de existencia sin generar errores; su resultado numérico funciona directamente como condición.
Conclusión
El caso es un buen recordatorio de que muchos errores de Excel no se arreglan añadiendo capas de captura, sino entendiendo cómo se comporta la función por dentro. Saber que ELEGIRFILAS es de todo o nada te ahorra media hora de probar combinaciones de funciones de error que nunca van a funcionar.
Y la moraleja de Gerson vale para casi todo: antes de blindar una fórmula, pregúntate si estás usando la función adecuada. Estos hilos, donde cuatro personas llegan por caminos distintos al mismo sitio, son lo mejor de la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Categorizar automáticamente conceptos con BUSCARX REGEX y MAP CasoUn miembro de la comunidad tiene una lista de compra (conceptos como "leche entera", "pan integral", etc.) y una tabla de categorías donde c
- Repetir un rango N veces según marca con MAP y CONTAR.SI CasoUn usuario necesita repetir un listado de locales (D2:D10) un número variable de veces para cada marca de la columna B. El número de repetic
- Readmisión de pacientes en 48h: Power Query, LAMBDA/MAP y AGRUPARPOR CasoAndrés Rojas plantea un reto real de datos clínicos: a partir de una tabla con más de un millón de registros de urgencias (IdPaciente, Fecha
- Buscar todos los valores coincidentes cuando BUSCARX solo devuelve uno CasoJuan se encuentra con un problema frecuente: tiene una tabla de búsqueda con claves duplicadas (A aparece varias veces con valores distintos
- Buscar prefijos de longitud variable en otra columna: BYROW, MAP, REGEX y COINCIDIRX CasoInteresante problema planteado por un miembro: tiene una columna A con ~1.200 referencias de longitud variable y una columna C con ~276 text
- Media móvil dinámica: 6 enfoques con SCAN, MMULT y MAP CasoUn miembro de la comunidad tiene un rango con ventas mensuales y necesita generar una columna con la media móvil de los últimos 3 meses usan
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¿MAP o BYROW? Descubre cuándo usar cada una Tutorial¿MAP o BYROW? Descubre cuándo usar cada una y cómo estas funciones pueden transformar tu forma de trabajar en Excel. En este vídeo aprenderá
- Filtrar una tabla por una lista de valores: una LAMBDA propia y su inversa TutorialTe pasan una lista de 30 números de albarán y hay que sacar esas filas de una tabla de miles. Con el autofiltro es marcar casillas una a una
- Dar formato a la última fila de una tabla que crece (y el techo del formato condicional) CasoUn miembro de la comunidad llega con una tabla cuyo rango real va de la columna embalaje a la columna total, y cuya columna de numeración co