top of page

Segunda parte ejemplo FITRAR, TEXTOANTES, TEXTODESPUES

Fijándonos en el modelo, vemos que tanto la función TEXTOANTES, como la función TEXTODESPUES, la usamos mas de una vez, la pregunta es, ¿podemos acortar estas sintaxis?, la respuesta, por supuesto es si, y, es lo que vamos a ver en este video.


Para conseguir la lista de provincias únicas, solo usamos una vez la función TEXTOANTES.


=ORDENAR(UNICOS(TEXTOANTES(Datos[Provincia/Centro/Producto];",")))


Para extraer el total para cada provincia, volvemos a usar la función TEXTOANTES, igual, que lo hemos hecho en la expresión anterior.


=SUMA(FILTRAR(Datos[Total];TEXTOANTES(Datos[Provincia/Centro/Producto];",")=H2))


Podemos crear un nombre de rango, donde guardamos la función TEXTOANTES, para ello, seleccionamos la expresión TEXTOANTES, pulsamos CTRL más C para copiar.


Pulsamos ESC.


Vamos a la pestaña de fórmulas, dentro del grupo nombres definidos, hacemos clic en asignar nombre.







Se abre la ventana, nombre nuevo, como nombre, le voy a poner, antes.








En la ventana se refiere a, borramos lo que hay, excepto el signo igual, y, pulsamos CTRL más V, para pegar.













Aceptamos.


Sabemos que los nombres de rangos, se busca igual que una función, por lo que, si escribimos las iniciales del nombre de rango, aparecerá en la ventana inferior.


Ahora, vamos a las dos expresiones anteriores, y, sustituimos la función TEXTOANTES, por el nombre de rango creado.


=ORDENAR(UNICOS(antes))


=SUMA(FILTRAR(Datos[Total];antes=H2))


Aparte de ser la sintaxis mas corta, seguimos teniendo los mismos resultados.


Seguimos, si nos fijamos en la expresión, donde hemos obtenido los productos únicos en horizontal, vemos, que usamos la función TEXTODESPUES.


=TRANSPONER(UNICOS(TEXTODESPUES(Datos[Provincia/Centro/Producto];",";2)))


Fijémonos en la expresión donde calculamos el total para provincia, y, producto, en este caso, usamos tanto la función TEXTOANTES, como la función TEXTODESPUES.


=SI.ERROR(SUMA(FILTRAR(Datos[Total];(TEXTOANTES(Datos[Provincia/Centro/Producto];",")=$K2)*(TEXTODESPUES(Datos[Provincia/Centro/Producto];",";2)=L$1)));"")


Por lo que voy a seguir los pasos anteriores para crear el nombre de rango, y, creare otro, llamado después, donde almacenare la función TEXTODESPUES.


Voy a sustituir la función TEXTODESPUES, por el nombre de rango después.


Primero, hago el cambio en la expresión donde conseguimos los productos únicos.


=TRANSPONER(UNICOS(después))


Ahora, lo hago en la expresión, donde calculamos los totales para provincia, y, producto.


=SI.ERROR(SUMA(FILTRAR(Datos[Total];(antes=$K2)*(despues=L$1)));"")


Volvemos a copiar, y, pegar.


Obtenemos los mismos resultados, pero con una sintaxis más corta, y, fácil de entender.


En un momento dato, podíamos usar la función LET, en el cálculo del total por provincia y producto, pues, vamos a hacerlo.


Escribo el signo igual, seguido de la función LET, y, abro un paréntesis.


=LET(


Declaro una primera variable, llamada, por ejemplo, a, punto y coma, y, pego la función TEXTOANTES.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",")


Punto y coma, declaro otra variable, llamada, b, punto y coma, y, pegado la función TEXTODESPUES.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2)


Punto y coma, ahora, viene el argumento calculo, donde usamos la función FILTRAR, como argumento array, seleccionamos la columna total.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total]


Punto y coma, abrimos un paréntesis, y, ponemos la primera condición.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total];(a=K2)


Símbolo de asterisco, abrimos paréntesis, y, ponemos la segunda condición.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total];(a=K2)*(b=L1)


Cerramos paréntesis.


=LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total];(a=K2)*(b=L1))))


Como queremos el total, después del signo igual, usamos la función SUMA.


=SUMA(LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total];(a=K2)*(b=L1))))


Fijamos como antes la columna de la referencia K2, y, la fila de la referencia L1.


=SUMA(LET(a;TEXTOANTES(Datos4[Provincia/Centro/Producto];",");b;TEXTODESPUES(Datos4[Provincia/Centro/Producto];",";2);FILTRAR(Datos4[Total];(a=$K2)*(b=L$1))))


Igual que antes, copiamos y pegamos.


Nos vuelve a dar el mismo error, donde no hay ventas, pues, usamos de nuevo la función SI.ERROR.


Tenemos los mismos resultados, ya es a petición del usuario, que expresión usar.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page