FILTRAR que devuelve múltiples filas: por qué falla y cómo resolverlo
Interesante problema que aparece con frecuencia cuando se combinan FILTRAR con funciones iterativas como MAP o BYROW. Un miembro tiene una tabla de datos (claves en L y valores en M) donde algunas claves se repiten (por ejemplo, "a" aparece dos veces con valores 10 y 20). Al usar FILTRAR dentro de una iteración, las claves repetidas devuelven más de una fila, y Excel lanza el temido error #CALC!.
Nacho explica la causa raíz: FILTRAR puede devolver múltiples filas por cada coincidencia, pero funciones como MAP esperan un único resultado por iteración. Cuando el resultado "no cabe", Excel no sabe cómo encajarlo y devuelve error.
Dos caminos para resolverlo:
1. Reducir a una fila: concatenar los resultados de cada iteración (por ejemplo con UNIRCADENAS) para que FILTRAR siempre devuelva un valor escalar. Útil cuando solo necesitas una representación resumida.
2. Acumular con REDUCE: si necesitas que cada iteración genere tantas filas como encuentre y las vaya apilando, REDUCE permite ir acumulando resultados de tamaño variable con APILARV.
El archivo incluye ambas soluciones trabajadas. La primera usa un enfoque fila por fila con columna auxiliar:
``
=CONTAR.SI($D$4:D4; D4)
`
Este CONTAR.SI con rango expansivo cuenta cuántas veces ha aparecido cada clave hasta la fila actual, generando un índice de ocurrencia (1ª vez, 2ª vez...). Luego ELEGIRFILAS selecciona la fila correcta:
`
=ELEGIRFILAS(
FILTRAR($L$4:$M$12; $L$4:$L$12=D4);
E4
)
`
La segunda solución lo resuelve todo en una única fórmula con REDUCE:
`
=SOLTAR(
REDUCE(
"";
D4:D12;
LAMBDA(a; i;
APILARV(a;
LET(
_id; CONTAR.SI($D$4:i; i);
ELEGIRFILAS(
FILTRAR(L4:M12; L4:L12=i);
_id
)
)
)
)
);
1
)
`
REDUCE itera sobre cada clave, CONTAR.SI con rango expansivo calcula la enésima ocurrencia, ELEGIRFILAS(FILTRAR(...), _id) extrae la fila correcta, y APILARV va acumulando el resultado. SOLTAR(…; 1) elimina la semilla vacía inicial.
Solución elegante con ELEGIRFILAS + MAP — John propone un tercer enfoque que evita tanto la concatenación como REDUCE:
`
=LET(
b; B4:B12;
g; G4:G12;
ELEGIRFILAS(
G4:I12;
COINCIDIRX(b; g) +
MAP(b; LAMBDA(i; SUMA(N(B4:i=i)))) - 1
)
)
`
En vez de filtrar, calcula directamente el número de fila que necesita. COINCIDIRX(b; g) encuentra la primera aparición de cada valor. Luego MAP con SUMA(N(B4:i=i)) cuenta cuántas veces ha aparecido ese mismo valor hasta la fila actual, generando un offset progresivo. Al sumar ambos y restar 1, obtiene el índice exacto de cada fila.
Caso muy didáctico con tres estrategias para superar las limitaciones de FILTRAR en contextos iterativos: columna auxiliar con CONTAR.SI, fórmula única con REDUCE, o indexación directa con ELEGIRFILAS+MAP`.
Más contenido de Excel en InflueXcel
- 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
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- BUSCARX con valor devuelto dinámico: elige la columna con un botón o un segmentador CasoUna integrante de la comunidad planteó un reto muy habitual al trabajar con tablas de varias columnas: tiene una lista de municipios con cua
- Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT) CasoJuan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes. T
- Mapa de España con burbujas: ubicar variables por provincia usando coordenadas X/Y CasoEsta semana surgió una duda muy visual en el grupo: cómo mostrar dos variables por provincia en un mapa de España — una pintada en intensida
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Grado de avance por proyecto: despivotar y volver a pivotar por fecha CasoNuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos. Juan plantea un problema habitual en oficinas té