Microsoft Excel y la función Lambda

71 / 100

Microsoft Excel y la función Lambda

LAMBDA es la nueva función del programa Excel de Microsoft. Ayuda a crear funciones personalizadas y además incluyendo otras funciones Excel. es decir, LAMBDA permite definir sus propias funciones personalizadas utilizando el lenguaje de fórmulas de Excel.

En el paquete de funciones que vienen con ella no encontramos: REDUCE, MAP, SCAN, BYCOL, BYROW o MAKEARRAY

En general todas estas funciones tienen la peculiaridad de trabajar, de una forma u otra sobre matrices de información, a las que aplica una transformación empleando la función LAMBDA.

De alguna manera podríamos decir que se comportan a modo de bucle o recorrido por los valores de la matriz dada.

Funciones

BYCOL

  • Aplica LAMBDA a cada columna y devuelve un vector columna con los resultados de la transformación resultante de Lambda.
    Su sintáxis es muy sencilla: =BYCOL(columna; LAMBDA(columna))

BYROW

  • Aplica LAMBDA a cada fila y devuelve un vector columna con los resultados de la transformación resultante de Lambda.
    Su sintáxis es: =BYROW(fila; LAMBDA(fila))

Ejemplo, Si disponemos de un matriz de valores en B2:D7 y queremos obtener una fila y una columna de subtotales:

Función LAMBDA

    • Al añadir en la celda E2 la función:
      =BYROW(B2:D7;LAMBDA(fila;SUMA(fila)))
      obtenemos un vector de valores que recorre nuestra matriz, recuperando para cada fila la operación deseada.
    • De forma similar en la celda B8 insertamos:
      =BYCOL(B2:D7;LAMBDA(columna;PROMEDIO(columna)))
      obteniendo un vector donde asocia para cada columna el cálculo descrito por Lambda.

MAKEARRAY

  • (traducida como ARCHIVOMAKEARRAY): Devuelve una matriz calculada de un tamaño de fila y columna especificado, aplicando LAMBDA a cada elemento de dicha matriz.
    Su sintaxis sería: =MAKEARRAY(filas; columnas; LAMBDA(fila; columna))
  • Ejemplo que nos permitiría crear una matriz que identifique cada elemento de la matriz por sus posiciones (fila 1 – col 1, fila 1- col 2, fila 2 – col 1, etc…)
    En cualquier celda escribiríamos: =ARCHIVOMAKEARRAY(3;2;LAMBDA(fila;col;–(fila&col)))  con lo que obtenemos una matriz de 3 filas x 2 columnas y como elementos su identificación de fila&columna
    Excel archivomakearray
  • Otro ejemplo:
    Excel archivomakearray2
    Ahora hemos convertido un vector N2:N14 en una matriz pero solo hemos cogido los 6 primeros. Tambien lo podíamos haber hecho con caracteres alfanuméricos.
    La fórmula empleada para llegar a este resultado es:
    =LET(arrPos;ARCHIVOMAKEARRAY(3;2;LAMBDA(fila;col;–(fila&col)));arrPosF;COINCIDIR(arrPos;K.ESIMO.MENOR(arrPos;SECUENCIA(6)));INDICE(G8:G13;arrPosF))

MAP

  • Devuelve una matriz formada por la asignación de cada valor de las matrices a un nuevo valor aplicando LAMBDA para crear un nuevo valor.
    Su sintáxis: =MAP(array1; LAMBDA_o_array)
    Esta función recorre cada elemento de la matriz, aplicándole la transformación indicada por LAMBDA, y dejando aparecer una matriz de igual dimensión.
    Excel MAP
    La fórmula aplicada: =MAP($A$21:$A$26;LAMBDA(param1;SI(ES.PAR(param1);param1;»-«)))
    Como se puede ver, la función recorre la matriz (A21:A26) aplicando el condicional indicado por LAMBDA, determinando si es par o no…

SCAN

  • Examina una matriz aplicando LAMBDA a cada valor y devuelve una matriz que tiene cada valor intermedio.
    La sintáxis será: SCAN ([initial_value]; array; LAMBDA(accumulator; value))
    donde:

    • [initial_value]: establece el valor inicial del acumulador.
    • array: matriz que se va a examinar.
    • función LAMBDA a la que se llama para examinar la matriz. Y sus dos importantes parámetros:
      • accumulator: Valor total y devuelto como resultado final.
      • value: Cálculo aplicado a cada elemento de la matriz.
  • Con SCAN conseguimos una matriz con valores secuenciales, calculados en base al resultado previo obtenido por la aplicación de LAMBDA
  • Por ejemplo, un acumulado creciente (running total) en valores absolutos y en valores porcentuales, de esta manera calculamos el acumulado de una muestra de sucesos y su frecuencia acumulada.
    Función SCAN
  • Las fórmulas aplicadas son:
    En C30 añadimos:
    =SCAN(0;A31:A36;LAMBDA(acum;param1;acum+param1))
    y en D30 insertamos:
    =LET(total;SUMA(A31:A36);SCAN(0;A31:A36;LAMBDA(acum;param1;(acum+param1)))/total)

REDUCE

  • Esta función reduce una matriz a un valor acumulado aplicando LAMBDA a cada valor y devolviendo el valor total en el acumulador.
    Esto es, hace algo similar a lo que desarrolla SCAN, pero solo retorna la última transformación.
    La sintaxis es: =REDUCE([initial_value]; array; LAMBDA(accumulator; value))
    donde:

    • [initial_value]: establece el valor inicial del acumulador.
    • array: matriz que se va a ‘reducir’.
    • función LAMBDA a la que se llama para reducir. Y sus dos importantes parámetros:
      • accumulator: Valor total y devuelto como resultado final.
      • value: Cálculo aplicado a cada elemento de la matriz.
  • Por ejemplo, para recuperar el valor acumulado último de una suma corrida
    EXCEL: REDUCE
    La fórmula del ejemplo es: =REDUCE(0;A1:A6;LAMBDA(acum;param1;acum+param1))
    Esta función permite aplicar recorridos sobre matrices y trabajar sobre el resultado previo, para de nuevo aplicar la siguiente operación.