🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel MAP, REDUCE y BYROW — Recorre matrices con los ayudantes de LAMBDA

|

Excel MAP, REDUCE y BYROW — Recorre matrices con los ayudantes de LAMBDA

TL;DRMAP, REDUCE, SCAN, BYROW y BYCOL son funciones de orden superior: toman un LAMBDA y lo ejecutan sobre una matriz — un For Each sin macro. El fallo número 1: el LAMBDA de BYROW/BYCOL debe devolver un valor por cada fila/columna, o te da #CALC!. Elige el ayudante según la forma de la respuesta que quieres. Excel 365 y 2024+.

=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v)))          ' transforma cada celda
=BYROW(data, LAMBDA(row, SUM(row)))              ' un total por fila
=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v))     ' colapsa a un único valor

LET te dio variables. LAMBDA te dio funciones. Los ayudantes te dan la última pieza de un lenguaje de programación: los bucles. Cada uno toma un LAMBDA y lo ejecuta sobre una matriz, así que nunca escribes For Each — describes qué hacer con cada elemento y Excel itera.

Lo que vas a aprender

  • El modelo mental: los bucles — pásale un LAMBDA a una matriz
  • Qué hace cada ayudante: MAP (transformar), REDUCE (colapsar), SCAN (totales acumulados), BYROW/BYCOL (un valor por fila/columna)
  • La regla número 1: BYROW debe devolver un único valor — la corrección de #CALC! para "una suma por fila"
  • El patrón del acumulador de REDUCE — y cuándo un simple SUMIFS sigue ganando

El modelo mental: estos son los bucles

Hay cinco ayudantes, y se dividen con claridad según qué forma sale:

  • MAP — transforma cada elemento → una matriz de la misma forma (10 celdas entran, 10 celdas salen).
  • REDUCEcolapsa una matriz entera hasta un único valor (un acumulador que avanza: total, concatenación, máximo).
  • SCAN — como REDUCE, pero conserva cada paso intermedio → un total acumulado que se desborda hacia abajo por la columna.
  • BYROW / BYCOL — ejecuta el LAMBDA sobre cada fila (o columna) completaun valor por fila (o columna).

En cuanto los ordenas por la forma de salida — misma forma, un valor, cada paso, uno por fila — elegir el ayudante correcto deja de ser adivinar.

Patrones para copiar y pegar

MAP — aplica una transformación a cada elemento:

=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v)))

REDUCE — reduce una matriz hasta un único valor (el acumulador acc arrastra el resultado hacia delante):

=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v))

SCAN — la misma idea, pero desborda cada paso (un total acumulado):

=SCAN(0, A2:A100, LAMBDA(acc, v, acc + v))

BYROW — un valor por fila (aquí, el máximo de cada fila):

=BYROW(A2:D100, LAMBDA(row, MAX(row)))

La regla que rompe BYROW: devuelve un valor por fila

Este es el ayudante que la gente usa mal, y el síntoma es #CALC!. El LAMBDA que le das a BYROW (o BYCOL) debe devolver un único valor por cada fila — un número, una cadena de texto, una sola celda. Si devuelve una matriz, BYROW no puede encajarla y lanza #CALC!.

=BYROW(data, LAMBDA(row, SUM(row)))      ' un número por fila -> funciona
=BYROW(data, LAMBDA(row, row*2))         ' #CALC!  — row*2 es una matriz, no un valor único

Ese segundo caso es en realidad un trabajo para MAP (transformar cada elemento), no para BYROW. El error también va en sentido contrario: hay quien recurre a MAP para conseguir "una suma por fila" y no logra que funcione — porque MAP actúa elemento a elemento y nunca agrega una fila. Si quieres un valor por fila, eso es BYROW. Si quieres transformar cada celda, eso es MAP. La forma de salida decide.

El acumulador de REDUCE: el único patrón que hay que interiorizar

REDUCE es el más potente y el menos intuitivo, por culpa de acc — el acumulador que arrastra el resultado parcial de un elemento al siguiente. Lee LAMBDA(acc, v, …) como "aquí tienes el resultado hasta ahora (acc) y el siguiente valor (v); devuelve el nuevo resultado-hasta-ahora."

  • Sumar: LAMBDA(acc, v, acc + v) empezando en 0
  • Concatenar: LAMBDA(acc, v, acc & ", " & v) empezando en ""
  • Conteo condicional: LAMBDA(acc, v, acc + (v>100)) empezando en 0

Una vez acc te encaja, REDUCE resuelve las tareas de "recorrer la lista y construir algo" que antes te obligaban a recurrir a VBA — saldos acumulados con reglas, agregaciones personalizadas, bucles de análisis.

El criterio: cuándo un simple agregado sigue ganando

Estos ayudantes iteran en el motor de cálculo y pueden ser lentos en matrices muy grandes. Para una suma normal, SUM/SUMPRODUCT/SUMIFS son más rápidos y sencillos — recurre a los ayudantes cuando la lógica por elemento sea genuinamente personalizada, no cuando un agregado integrado ya hace el trabajo.

Lo que quieres… Ayudante Forma de salida
Transformar cada elemento MAP La misma forma que la entrada
Un valor por fila BYROW Una columna de resultados
Un valor por columna BYCOL Una fila de resultados
Colapsar a un único valor REDUCE Una celda
Un total acumulado por filas SCAN La misma forma, acumulativa

Si estás arrastrando una fórmula de total acumulado por 10.000 filas, eso es un SCAN; si estás añadiendo una columna auxiliar solo para calcular un valor por fila, eso es un BYROW. Pero si un SUMIFS ya responde a la pregunta, úsalo — los ayudantes son para lógica personalizada, no para reimplementar agregados.

Cómo ayuda ExcelMaster

Las funciones de orden superior son la parte más empinada del Excel moderno — acc, las formas de salida, MAP-frente-a-BYROW — y justo donde un copiloto de IA ahorra más tiempo. ExcelMaster convierte "dame el máximo de cada fila" o "un saldo acumulado que se reinicia cada mes" en la fórmula MAP/REDUCE/BYROW correcta, elige el ayudante adecuado para la forma de salida que quieres y te explica el paso del acumulador uno a uno. Cuando un ayudante lanza #CALC!, te dice si necesitabas BYROW en lugar de MAP — y la reescribe. Pruébalo con tus propios datos.

Preguntas frecuentes

¿Qué son las funciones ayudantes de LAMBDA en Excel?

MAP, REDUCE, SCAN, BYROW y BYCOL son funciones de orden superior: cada una toma un LAMBDA y lo ejecuta sobre una matriz. Te permiten recorrer datos en una fórmula — transformando, agregando o acumulando — sin escribir una macro de VBA.

¿Por qué BYROW devuelve #CALC!?

El LAMBDA que le pasaste devuelve una matriz en lugar de un único valor. BYROW necesita un valor por fila — agrega la fila con SUM(row), MAX(row), etc. Si lo que de verdad quieres es transformar cada elemento, usa MAP, no BYROW.

¿Cuál es la diferencia entre MAP y BYROW?

MAP actúa elemento a elemento y devuelve una matriz de la misma forma que la entrada. BYROW actúa sobre filas enteras y devuelve un valor por fila. Usa MAP para transformar cada celda; usa BYROW para obtener un total, máximo o conteo por fila.

¿Cómo funciona REDUCE en Excel?

REDUCE(inicial, matriz, LAMBDA(acc, v, …)) recorre la matriz arrastrando un acumulador acc. Por cada valor v calcula un nuevo acc. =REDUCE(0, A2:A100, LAMBDA(acc, v, acc+v)) suma el rango; empezando en "" con acc & v lo concatena.

¿Qué versiones de Excel tienen MAP, REDUCE y BYROW?

Los ayudantes de LAMBDA están disponibles en Excel 2024 y Microsoft 365 para Windows y Mac. No están en Excel 2021, 2019 ni 2016.

Probado en

Probado en: Excel 365 (Windows 11): última verificación el 22/06/2026.

Guías relacionadas: Excel LAMBDA · Excel LET · Excel SORT · Excel SEQUENCE