top of page

Ejemplo TOMAR

Veamos otro ejemplo de la función TOMAR, seguimos trabajando con el modelo que suelo usar habitualmente, esta modelo esta en formato de tabla, y, se llama Ventas.









Vamos a seleccionar una provincia, vamos a obtener la primera venta, y, vamos a obtener la última venta del producto de la primera venta, por ejemplo, si seleccionamos la provincia de Leon, conseguimos la primera venta, donde vemos que la venta fue el producto frigorífico.




Lo siguiente es obtener la ultima venta que se realizado para el producto frigorífico.

En la celda U2, tengo las provincias únicas y ordenadas.


=ORDENAR(UNICOS(Ventas[Provincia]))


En la celda J2, vamos a crear una lista desplegable para seleccionar una provincia, para ello, vamos a la pestaña de datos, dentro de herramientas de datos, hacemos clic en validación de datos.







Desplegamos permitir, seleccionamos lista, en la ventana origen, ponemos la celda U2 seguido del operador de rango derramado.












Aceptamos.


Seleccionamos una provincia.


Vamos a filtrar la tabla ventas por la provincia seleccionada, para ello, usamos la función FILTRAR, como argumento array, ponemos Ventas, como argumento include, seleccionamos la columna de provincia, y, la igualamos al valor de la celda J2.


=FILTRAR(Ventas;Ventas[Provincia]=J2)


Usamos LET, creamos una variable (a), almacenamos la expresión anterior, creamos otra variable (b), usamos la función TOMAR, como argumento matriz, ponemos la variable “a”, como argumento filas, ponemos 1, omitimos el argumento columnas, que es opcional.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1)


Creamos otra variable (c), filtramos la tabla ventas por la provincia seleccionada, y, el producto devuelto por la primera fila, para ello, volvemos a usar la función FILTRAR, como argumento array, ponemos Ventas, como argumento include, abrimos un paréntesis para poner la primera condición, ponemos la columna provincia, la igualamos al valor de la celda J2, cerramos paréntesis.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1);c;FILTRAR(Ventas;(Ventas[Provincia]=J2)


Ponemos el símbolo de asterisco (*), ya sabemos que es igual que el operador lógico Y, abrimos otro paréntesis, seleccionamos la columna de producto, e, igualamos a la columna de producto de la fila obtenida, para ello, usamos la función INDICE, como argumento matriz, ponemos la variable “a”, como argumento numero de fila, ponemos 1, como argumento número de columna ponemos 5, cerramos paréntesis de INDICE, de la condición, y, de FILTRAR.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1);c;FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)))


Como argumento caculo de LET, usamos la función APILARV, como argumento matriz1, ponemos la variable “b”, como argumento matriz2, ponemos la función TOMAR, como argumento matriz, ponemos la variable “c”, como argumento filas, ponemos -1, y, nos devolverá la primera fila por el final.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1);c;FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)));APILARV(b;TOMAR(c;-1)


Cerramos paréntesis, aceptamos, y, tenemos un matriz desbordada de dos filas, la primera de ellas contiene la primera venta, y, la segunda de ellas contiene la última venta del producto de la primera fila obtenida.




Ahora, queremos recuperar la fila en la que el producto más se vendió, la expresión es muy parecida a la anterior, hasta aquí es igual a la expresión anterior, pero, vamos a añadir el argumento columnas a la función TOMAR, y, ponemos -1, para obtener el total.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1-1)


En la expresión anterior, creamos una variable (“c”), donde usamos la función FILTRAR.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1;-1);c;FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)))


En esta expresión, es la misma expresión, pero, usamos la función TOMAR en la segunda función FILTRAR, donde como argumento matriz es la función FILTRAR, como argumento filas, ponemos -1, es decir, la última fila, como argumento columnas, ponemos -1, para que nos devuelva la última columna.


Cerramos paréntesis.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1;-1);c;TOMAR(FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)));-1;-1)


Como argumento calculo de LET, usamos la función FILTRAR, donde filtramos la matriz desbordada obtenida con la primera expresión.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1;-1);c;TOMAR(FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)));-1;-1);FILTRAR(K2#


Como argumento include, usamos INDICE, como argumento matriz, es la matriz desbordada K2#, como argumento numero de fila, usamos una constante de matriz, y, ponemos los valores 1 y 2, como argumento numero de columna, ponemos 8, cerramos paréntesis de INDICE y lo igualamos al valor máximo entre la variable “b” y “c”, para ello, usamos la función MAX.


Cerramos paréntesis.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=J2);b;TOMAR(a;1;-1);c;TOMAR(FILTRAR(Ventas;(Ventas[Provincia]=J2)*(Ventas[Producto]=INDICE(a;1;5)));-1;-1);FILTRAR(K2#;INDICE(K2#;{1;2};8)=MAX(b;c)))


Aceptamos, y, vemos que tenemos la fila donde más se vendió del producto.





Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page