top of page
Foto del escritorJaime Franco Jimenez

La función MAP

Actualizado: 4 jun 2023

Devuelve una matriz formada por cada valor de un rango de datos, o, de las matrices.


Sintaxis


MAP (array1, LAMBDA_or_array<#>)

· array1. La matriz que vamos a usar.

· LAMBDA_or_array<#>. La función LAMBDA que debe ser el último argumento y que debe tener un parámetro para cada matriz.


En esta función, podemos especificar más de un rango de datos.


Veamos un ejemplo sencillo, tenemos los siguientes datos:





Escribimos MAP, como argumento array1, seleccionamos el rango de datos.


=MAP (A1:C2;


Como función LAMBDA, creamos una variable llamada matriz1, donde preguntamos con el condicional SI, que, si la variable matriz1 es mayor a 30, sumamos dos a la variable matriz1, en caso contrario, que ponga un texto en blanco.


LAMBDA (matriz1; SI (matriz1>30; matriz1+2;"")))


Formula completa.


=MAP (A1:C2; LAMBDA (matriz1; SI (matriz1>30; matriz1+2;"")))


Aceptamos, y, tenemos una matriz desbordada, solo con los valores, que son mayores a 30.






Veamos otro ejemplo.


Tenemos los siguientes datos, ventas de productos, en diferentes centros comerciales, en diferentes provincias, y, fechas.






Queremos filtrar por provincia, y, centro comercial.


Vamos a crear dos validaciones, la primera de ellas, para seleccionar una provincia, donde primero, debemos de traernos las provincias únicas, que haremos, con la función UNICOS.


=UNICOS(B4:B1219)


Ordenamos.


=ORDENAR(UNICOS(B4:B1219))


Vamos a crear la lista desplegable por provincias.


Lo hacemos en la celda I3, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en validación de datos.







Se abre la ventana, validación de datos, desplegamos lista, y, seleccionamos permitir.












En la ventana, origen, seleccionamos las provincias.






Aceptamos, y, seleccionamos una provincia.


Vamos a crear una segunda lista desplegable, pero en este caso, con los centros comerciales, debemos de crear una nueva lista de centros comerciales únicos, lo hacemos, como lo hemos hecho para provincias.


=UNICOS(C4:C1219)


Creamos, esta segunda lista desplegable, como lo hemos hecho anteriormente, para la primera lista.


Seleccionamos un centro comercial.





Empecemos.


Lo vamos a hacer, primero, con la función matricial FILTRAR.


Para ello, escribimos el signo igual, seguido de la función FILTRAR, y, abrimos un paréntesis.


=FILTRAR(


Como argumento, array, seleccionamos el modelo de datos.


=FILTRAR(Datos!$A$4:$G$1219;(Datos!$B$4:$B$1219=I3)*(Datos!$C$4:$C$1219=J3))


Como argumento include, debemos de poner dos condiciones, por lo que abrimos un paréntesis, seleccionamos la columna de provincias, igualamos a la provincia seleccionada en la lista desplegable, cerramos paréntesis, ponemos el símbolo de asterisco, abrimos otro paréntesis, seleccionamos la columna de centro, igualamos al centro seleccionado en la lista desplegable, cerramos paréntesis de la condición y de FILTRAR.


=FILTRAR(Tabla1;(Tabla1[Provincia]=I3)*(Tabla1[Centro]=J3))


Aceptamos, y, tenemos una matriz desbordada con el modelo filtrado por la provincia, y, centro seleccionado.










Ahora lo vamos a hacer con la función MAP, el modelo está en formato de tabla, y, se llama Tabla2.


Para ello, ponemos el signo igual y la función FILTRAR.


Como argumento array de la función FILTRAR ponemos el modelo.


=FILTRAR (Tabla2;


Ahora, en el argumento include, de la función FILTRAR, usamos la función MAP.


Como argumento matriz de la función MAP, usamos las columnas provincia, y, centro comercial.


=FILTRAR(Tabla2;MAP(Tabla2[Provincia];Tabla2[Centro]


Punto y coma, ponemos LAMBDA, creamos dos variables, por ejemplo, A y B.


=FILTRAR(Tabla2;MAP(Tabla2[Provincia];Tabla2[Centro];LAMBDA(a;b


Y como argumento cálculo de la función LAMBDA, usamos el operador lógico Y, donde peguntamos si el valor de la variable A es igual a la provincia seleccionada, y, si el valor de la variable B es igual al centro seleccionado.


Cerramos paréntesis.


=FILTRAR(Tabla2;MAP(Tabla2[Provincia];Tabla2[Centro];LAMBDA(a;b;Y(a=I3;b=J3))))



Aceptamos, y, tenemos una matriz desbordada filtrada por la provincia y centro seleccionado.









Ahora, al modelo añadimos dos columnas, una que va a ser mes, y, otra que va a ser año.












El modelo está en formato de tabla, y, se llama Tabla3.


En la celda K3, creamos una lista desplegable para seleccionar un mes, primero, en la celda K4 nos traemos los meses únicos.


En la celda L3, creamos otra lista desplegable para seleccionar un año, creando en la celda L4, los valores únicos de los años.


Seleccionamos un mes, y, un año.


Solo tenemos que cambiar el argumento matriz de la función MAP, que ahora van a ser las columnas mes y año.


=FILTRAR(Tabla3;MAP(Tabla3[Mes];Tabla3[Año];LAMBDA(a;b;Y(a=K3;b=L3))))


Aceptamos, y, tenemos el modelo filtrado por el mes y año seleccionado.


Ahora, lo que queremos es calcular el total del mes y año elegido, también del año siguiente al elegido, y, calcular la diferencia porcentual.


Lo haremos en la hoja Ejemplo3, el modelo está en formato de tabla, y, se llama Tabla4.


En este caso, no vamos a usar la función FILTRAR, porque no vamos a filtrar nada.


En la celda N3, escribimos el signo igual, seguido de la función MAP, y, abrimos un paréntesis.


=MAP(


Como argumento matriz, vamos a poner la columna mes, la columna año, y, la columna total.


= MAP(Tabla4[Mes];Tabla4[Año];Tabla4[Total]


Punto y coma, ponemos LAMBDA, declaramos tres variables, por ejemplo, A, B, y, C.


= MAP(Tabla4[Mes];Tabla4[Año];Tabla4[Total];LAMBDA(a;b;c


Como argumento calculo, preguntamos que, si la variable A es igual al mes seleccionado, y, la variable B, es igual al año seleccionado, por lo que usamos el operador lógico Y, en ese caso, que nos devuelva la variable C, en caso contrario, que ponga un texto en blanco.


Cerramos paréntesis.


=MAP(Tabla4[Mes];Tabla4[Año];Tabla4[Total];LAMBDA(a;b;c;SI(Y(a=$K$3;b=$L$3);c;"")))


Aceptamos, y, tendremos una matriz desbordada con los totales para el mes y año seleccionado, pero como queremos el total, delante ponemos la función suma.


=SUMA(MAP(Tabla4[Mes];Tabla4[Año];Tabla4[Total];LAMBDA(a;b;c;SI(Y(a=$K$3;b=$L$3);c;""))))


Aceptamos, y, ya lo tenemos.






Para conseguir el total del año siguiente, la función es la misma, lo único que debemos de sumar 1 al año seleccionado.


=SUMA(MAP(Tabla4[Mes];Tabla4[Año];Tabla4[Total];LAMBDA(a;b;c;SI(Y(a=K3;b=L3+1);c;""))))


Para calcular la diferencia porcentual, restamos el valor de N3 menos el valor de O3, cerramos entre paréntesis por la prioridad de operadores, y, dividimos por el valor de N3.


=(N3-O3) /N3










22 visualizaciones0 comentarios

Entradas Recientes

Ver todo

Comments


bottom of page