¿MAP o BYROW? Descubre cuándo usar cada una
¿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ás la diferencia clave entre MAP y BYROW, sus similitudes y verás ejemplos prácticos para que nunca más dudes cuál aplicar en cada caso.
Las funciones MAP y BYROW son dos piezas clave para entender el Excel moderno. A simple vista se parecen mucho —ambas reciben un rango y le aplican una función con ayuda de LAMBDA—, pero esconden una diferencia fundamental que determina cuál debes usar en cada situación. En este tutorial vemos cómo se construyen paso a paso, en qué se parecen, en qué se diferencian y, sobre todo, cuándo conviene usar cada una.
Cómo se construye MAP
MAP recorre un rango y aplica una función a cada celda de forma individual. Su estructura básica es:
- Le pasas el rango sobre el que quieres trabajar.
- Le indicas con
LAMBDAqué operación realizar en cada celda.
Por ejemplo, =MAP(rango; LAMBDA(celda; celda*2)) multiplica por dos cada valor del rango. La variable celda representa cada uno de los valores que recorre. El resultado es una matriz del mismo tamaño que el rango de entrada: si le pasas dos columnas, te devuelve dos columnas con cada celda transformada.
Cómo se construye BYROW
BYROW se escribe igual: un rango más una LAMBDA. La diferencia es que BYROW trabaja fila a fila y solo puede devolver un único valor por fila (una sola columna de salida).
Con un rango de una columna, =BYROW(rango; LAMBDA(fila; fila*2)) da el mismo resultado que MAP. Y aquí está el origen de la confusión: cuando el rango es de una sola columna, ambas funciones se comportan igual.
La diferencia clave: varias columnas
El comportamiento cambia en cuanto el rango tiene más de una columna:
MAPsigue funcionando sin problema: aplica la función celda por celda y devuelve una matriz con las mismas filas y columnas.BYROWda un error de matrices anidadas. Como solo puede devolver una columna, no sabe qué hacer si le pides un resultado por cada valor de la fila.
Para que BYROW funcione con varias columnas, tienes que decirle cómo resumir esa fila en un solo número. Por ejemplo, LAMBDA(fila; SUMA(fila2)) multiplica cada valor por dos y suma toda la fila, devolviendo un único resultado. Curiosamente, si haces SUMA(celda2) dentro de un MAP, no cambia nada: como MAP ya procesa celda a celda, la suma de una sola celda es esa misma celda.
La regla práctica: BYROW acumula, MAP transforma. Usa MAP para aplicar la misma función a un conjunto de celdas, aunque sea una sola columna; reserva BYROW para cuando necesites acumular varias columnas en un valor por fila.
Varios rangos en MAP
Una particularidad de MAP es que admite varios rangos como parámetros de entrada. Puedes pasarle dos rangos y operar entre ellos, por ejemplo: MAP(rango1; rango2; LAMBDA(celda1; celda2; celda1+celda2)). El requisito es que todos los rangos tengan el mismo tamaño (mismo número de filas y columnas). Si tienen tamaños distintos, Excel intenta emparejar solo las columnas coincidentes y devuelve error o resultados parciales donde no hay coincidencia.
Trabajar con referencias, no solo con valores
Tanto MAP como BYROW pueden devolver la referencia de la celda que están recorriendo, no solo su valor. Esto abre la puerta a crear rangos dinámicos. Por ejemplo, usando la celda como referencia puedes construir una suma acumulada desde la primera casilla hasta la celda actual:
- En
MAP, defines un rango de referencia fija y sumasSUMA(primera_celda:celda), obteniendo el acumulado en cada posición. - En
BYROWpuedes simular el comportamiento deSCAN, sumando en cada fila el valor acumulado desde la celda inicial.
Un detalle importante: esto solo funciona si el rango existe físicamente en la hoja. Si conviertes el rango en una matriz mediante una operación (por ejemplo, multiplicándolo dentro de otra fórmula), las celdas pierden su referencia y los juegos de referencias dejan de funcionar.
Caso práctico: horas de una plantilla
El ejemplo final ilustra perfectamente cuándo usar cada función. Imagina el cuadro de turnos de un restaurante con cinco personas: cada día tiene un turno (A, B, C) y cada turno equivale a un número de horas. El objetivo es doble:
- Convertir cada letra en sus horas con
MAP, aplicando unBUSCARXa todas las celdas de golpe:MAP(rango; LAMBDA(celda; BUSCARX(celda; matriz_turnos; matriz_horas; 0))). - Acumular las horas de cada persona por semana con
BYROW, sumando por fila el resultado anterior:BYROW(resultado_map; SUMA)o, si tu versión de Excel no admite la función eta,BYROW(resultado_map; LAMBDA(fila; SUMA(fila))).
El primer paso transforma una rejilla entera de celdas; el segundo acumula varias columnas en un total por fila. Cuando solo hay una columna, ambas funciones sirven indistintamente, pero usar MAP para transformar y BYROW para acumular evita confusiones.
Conclusión
MAP y BYROW comparten sintaxis, pero responden a necesidades distintas: MAP transforma celda a celda y devuelve una matriz del mismo tamaño; BYROW acumula fila a fila y devuelve un único valor por fila. Si tienes que aplicar la misma función a un conjunto de celdas, usa MAP; si necesitas resumir varias columnas en un resultado por fila, usa BYROW. Con esta distinción clara, dominar el Excel moderno con funciones de matriz dinámica resulta mucho más sencillo.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- 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
- Error #CALC! con MAP y AGRUPARPOR: solución con REDUCE+APILARV CasoNuevo reto de Excel resuelto por la comunidad: un usuario necesita aplicar AGRUPARPOR de forma iterativa sobre un rango de códigos de cuenta
- Unir las columnas de cada fila con BYROW sin que sobre el separador del final: doce maneras CasoJuan tenía dos columnas por fila, un código (A.5) y una descripción (b) Prestaciones de servicios), y quería unirlas con un guion en medio:
- De una dirección escrita en texto al bloque de celdas vecinas: por qué MAP con INDIRECTO da #¡CALC! CasoJuan tenía una columna con direcciones de celda escritas como texto (CC11, CC29, CC31…) y quería traer, para cada una, las cuatro celdas de
- Del VBA a una sola fórmula: calcular el RFC mexicano con LET, MAP y expresiones regulares CasoHéctor llega al grupo con un problema que no se ve todos los días: tiene resuelto el cálculo del RFC mexicano, pero lo tiene en VBA, y quier
- 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
- Payback y Payback Descontado en una sola fórmula con BYROW CasoHenry necesitaba calcular el Payback y el Payback Descontado de una inversión, y tenía dos fórmulas separadas con LET + SCAN que funcionaban
- Identificar proveedor en asientos contables con BUSCARX y BYROW CasoJuan comparte en el grupo una fórmula de John Vergara que le ha "salvado la vida laboral" para un problema clásico de contabilidad: en un di
- Tabla de clasificación de una liga que se ordena sola: tres formas de montarla CasoDe madrugada, Héctor lanzó al grupo una petición que suena sencilla y que acabó generando tres enfoques radicalmente distintos. Tiene un lib
- SI.ERROR falla con textos de más de 255 caracteres: alternativa con ESERROR CasoUn caso que pilló desprevenida a la comunidad: al usar FILTRAR sobre una columna que contiene textos largos (más de 255 caracteres), las fil