top of page

18. Ejemplo de FILTRAR con múltiples criterios


Vamos a trabajar con el modelo de contoso.


Tenemos una hoja llamada ventas, donde tenemos los ID, como IDtienda, IDproducto entre otros.

ree




Nos han encargado que hagamos una lista con los nombres de los canales, y, debemos de filtrar por el nombre de dicho canal.


El problema que se presenta es que en la hoja ventas, no tenemos el nombre del canal sino su ID, y, el cliente no quiere que toquemos el modelo, es decir, que no añadamos columnas, ni hojas, etc.


Debemos de trabajar tal cual está el modelo.


Este ejercicio lo haremos en una hoja nueva.


Vamos a crear un desplegable para seleccionar un canal.


Nos colocamos, por ejemplo, en la celda B1, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en validación de datos.

ree







Desplegamos permitir, y, seleccionamos lista.

ree











Hacemos clic en el siguiente icono.

ree











Seleccionamos los canales.

ree



Aceptamos.

ree




A mi se me ocurre buscar el IDCanal de la hoja ventas, buscarlo en la hoja de canal, y, que me devuelva el nombre de dicho canal.


Como el valor a rescatar es el nombre del canal, y, está en la derecha, no puedo usar la función BUSCARV porque ignora todas las columnas que haya a la izquierda a partir de la columna donde buscamos el valor, por lo que voy a usar la función BUSCARX.


Como argumento valor buscado, es el valor de la celda B1, el argumento matriz de búsqueda es desde B2 a B5 de la hoja canal, y, como argumento matriz devuelta, es desde A2 a A5 de la hoja canal.


=BUSCARX(B1;Canal!B2:B5;Canal!A2:A5)


Ya tenemos el id a que corresponde el canal que hemos seleccionado.

ree




Ahora, podemos usar la función FILTRAR, donde filtro la columna fechapedido, y, en el argumento include, comparo la columna IDCanal con el resultado de la función BUSCARX.


FILTRAR(Tabla1[FechaPedido];Tabla1[IDCanal]=BUSCARX(A1;Canal!B:B;Canal!A:A)))


Aceptamos.


Vemos que ya tenemos filtrado las fechas del modelo por el canal que hemos seleccionado.

ree









Ponemos la columna de fecha en formato de fecha corta.


Vamos a dejar las fechas únicas, para ello, usamos la función UNICOS.


=UNICOS(FILTRAR(Tabla1[FechaPedido];Tabla1[IDCanal]=BUSCARX(A1;Canal!B:B;Canal!A:A)))


Ordenamos, con los argumentos por defecto.


=ORDENAR(UNICOS(FILTRAR(Tabla1[FechaPedido];Tabla1[IDCanal]=BUSCARX(A1;Canal!B:B;Canal!A:A))))

ree








Ahora nos vamos a quedar solo con el nombre del mes y el año, para ello, voy a hacer uso de la función TEXTO.


Esta función tiene dos argumentos, que es valor, y formato, pues el argumento valor es la función que tenemos, y, el argumento formato, ponemos entre comillas el formato de la fecha, es decir, “mmmm\aaaa”, quiere decir, que debe de poner el nombre del mes y del año.


=TEXTO(ORDENAR(UNICOS(FILTRAR(Tabla1[FechaPedido];Tabla1[IDCanal]=BUSCARX(A1;Canal!B:B;Canal!A:A))));"mmmm\aaaa")


Ya tenemos lo que buscamos.

ree












Pero claro, los meses de repiten, pues, después del signo igual, usamos la función UNICOS, para quitar los duplicados.


=UNICOS(TEXTO(ORDENAR(UNICOS(FILTRAR(Tabla1[FechaPedido];Tabla1[IDCanal]=BUSCARX(A1;Canal!B:B;Canal!A:A))));"mmmm/aaaa"))


Ya tenemos desde enero a diciembre para cada año.

ree











Ahora, vamos a calcular el total para cada mes de cada año.


Vamos a volver a usar la función FILTRAR.


Como argumento array, señalamos la columna de total, pero vamos a escribir los argumentos.


=FILTRAR(Tabla1[Total];


Abrimos un paréntesis para poner la primera condición del argumento include, donde vamos a usar la función AÑO para extraer el año de la columna fechapedido y lo comparamos con el año de la primera fecha obtenida, y cerramos paréntesis.


=FILTRAR(Tabla1[Total];(AÑO(Tabla1[FechaPedido])=AÑO(C3)


Ponemos el símbolo de asterisco para poner la siguiente condición, y, abrimos un paréntesis, donde vamos a comparar cada mes con la función MES de la columna fechapedido con el primer mes de la matriz obtenida.


Debemos de seleccionar la celda que contiene el primer mes, no la matriz desbordada, en ese caso, nos devolverá error.


=FILTRAR(Tabla1[Total];(AÑO(Tabla1[FechaPedido])=A4)*(MES(Tabla1[FechaPedido])=MES(C3)))

Aceptamos.


Sumamos todos los resultados.


=SUMA(FILTRAR(Tabla1[Total];(AÑO(Tabla1[FechaPedido])=AÑO(C3)*(MES(Tabla1[FechaPedido])=MES(C3)))))



Vemos el total para el mes de enero del año 2019.

ree




Arrastramos, y, tenemos los totales para cada mes de cada año.

ree

















Pero tenemos los totales para todos los canales, porque aun no hemos filtrado por canal.


Por lo que a la expresión anterior, le vamos a añadir la función BUSCARX, es decir, vamos a comparar la expresión anterior con el resultado de BUSCARX.


=SUMA(FILTRAR(Tabla1[Total];(AÑO(Tabla1[FechaPedido])=AÑO(C3)*(MES(Tabla1[FechaPedido])=MES(C3)*(Tabla1[IDCanal]=BUSCARX($B$1;Canal!B:B;Canal!A:A))))))


Ahora tenemos los totales para el canal seleccionado.


Ahora vamos a sacar los totales por trimestres pero para cada año.

ree




Voy a usar de nuevo la función FILTRAR.


Como argumento array, seleccionamos los valores.


=FILTRAR($M$5:$M$40;


Tenemos que especificar 4 condiciones, que es el año, y, los números de trimestres.


Si para realizar esta operación usásemos los operadores lógicos Y/O, usaría el operador lógico O, para preguntar si el numero de mes es 1, 2, o, 3.


Después usaría el operador lógico Y, para preguntar si el año es igual a 2019, que sería la primera condición, y, la segunda condición es una de las coincidencias que ha encontrado el operador lógico O, quiere decir, que el operador lógico O es la segunda condición del operador lógico Y.


Hagámoslo en una celda.


De momento, uso el operador lógico O, para preguntar si el mes de la primera fecha es 1,2, o, 3.


=O(MES(C4)=1;MES(C4)=2;MES(C4)=3)


Me devuelve VERDADERO, porque una de las condiciones se cumple, que es el mes de enero, o sea, el mes 1.


Ahora, debo de preguntar que el año sea 2019, que es el primer año.


Tengo que usar el operador lógico Y, debido a que se debe de cumplir tanto el año como el mes.


Entones quedaría:


=Y(AÑO(C4)=2019;O(MES(C4)=1;MES(C4)=2;MES(C4)=3))


Me vuelve a devolver VERDADERO, porque el operador lógico O, devuelve VERDADERO, y, el año, es cierto, que es 2019, por lo que ambas condiciones se cumplen, y el operador lógico Y, solo va a devolver VERDADERO, si todas las condiciones se cumplen.


Pues así debemos de especificarlo dentro de la función FILTRAR.


La sintaxis quedaría usando de momento el operador lógico O, que en la función FILTRAR en el símbolo de más (+).


=FILTRAR(D4:D39;(MES(C4#)=1)+(MES(C4#)=2)+(MES(C4#)=3)


Ahora, vamos a añadir el primer año.


=FILTRAR(D4:D39;(AÑO(C4#)=F4)*((MES(C4#)=1)+(MES(C4#)=2)+(MES(C4#)=3)))


Aceptamos y tenemos una matriz desbordada con los valores de los tres primeros meses del primer año.

ree






Pero como queremos el total usamos la función SUMA.


=SUMA(FILTRAR(D4:D39;(AÑO(C4#)=F4)*((MES(C4#)=1)+(MES(C4#)=2)+(MES(C4#)=3))))

ree




Fijamos todas las referencias, excepto, la referencia F4, que solo debemos de fijar la columna, para, que cuando copiemos hacia la derecha no se actualice, en caso contrario, no tomaría el año.


=SUMA(FILTRAR($D$4:$D$39;(AÑO($C$4#)=$F4)*((MES($C$4#)=1)+(MES($C$4#)=2)+(MES($C$4#)=3))))


Copiamos hacia la derecha.


Cambiamos los números de meses.

Arrastramos hacia abajo.


Ya tenemos los totales por trimestres.

ree





Ahora, vamos a calcular la diferencia porcentual de cada año respecto al total.


Para ello, dividimos el total de cada año entre el total de todos los años.


=SUMA(G4:J4)/SUMA(G4:J6)

ree





Antes de arrastrar, debemos de fijar el rango G4:J6, de la función SUMA, ya que al arrastrar no se deben de actualizar, para que siempre tome los mismos valores.


=SUMA(G4:J4)/SUMA($G$4:$J$6)


Ya lo tenemos.

ree






Por último, graficamos los años, y, el porcentaje, donde tenemos que usar el eje secundario.


Pero antes, lo que voy a hacer es calcular los totales por año, para ello, selecciono el siguiente rango.

ree





Presión ALT más Igual, que es el atajo de auto suma.


Ya tenemos los totales.

ree






Seleccionamos dichos totales.


Insertamos un gráfico de columnas 2D. desde la pestaña insertar, y, dentro del grupo gráficos.

ree









Quitamos líneas de división, para ello, seleccionamos el grafico, hacemos clic en el símbolo mas (+) en la parte superior derecha del gráfico, y, desmarcamos, líneas de cuadricula.

ree














ree










Quitamos el título, para ello, simplemente lo seleccionamos, y, pulsamos la tecla de suprimir.


Vamos a graficar los porcentajes.

ree






Seleccionamos el grafico, se habilitan las pestañas de diseño de gráfico, y, formato.


Dentro de diseño de gráfico, hacemos clic en seleccionar datos.

ree







Se abre la ventana de seleccionar origen de datos, pues, hacemos clic en agregar.

ree










Se abre la ventana modificar serie.

ree








Hacemos clic en el siguiente icono.

ree








Señalamos la celda donde pone porcentaje, y, es el título de la serie.


Hacemos clic en el siguiente icono.

ree








Señalamos los valores de porcentajes, y, hacemos clic en el siguiente icono.

ree




ree








Aceptamos.


Vuelve a la ventana seleccionar origen de datos, pues, aceptamos.


Si nos fijamos en el gráfico, parece que no ha sido graficado nada.

ree












Pero, si lo ha sido, lo que ocurre, es que los datos de porcentajes son tan pequeños, respecto al resto de datos, que apenas se ven, si nos damos cuenta, esta el sitio del porcentaje, con una columna mínima, que apenas se ve.


Por supuesto, vamos a verlo.


Para ello, con el botón alternativo del ratón, dentro de una columna, seleccionamos cambiar tipo de gráfico de series.

ree













Elegimos combinado, en la ventana elija tipo de grafico y el eje para la serie de datos, vemos el tipo de grafico que tenemos seleccionado, siendo todos de columnas agrupadas.

ree







Lo primero, que vamos a hacer, es cambiar el tipo de grafico para porcentajes, para ello, hacemos clic el siguiente icono.

ree







Elegimos grafico de líneas.

ree














Vemos que ya ha sido cambiado.

ree







Pero, esto no hará que se vea, si nos fijamos en la derecha, en la parte superior, pone eje secundario, esto quiere decir, que agregara un nuevo eje de valores a la derecha, con los datos que le digamos, en este caso, de los porcentajes, por lo que marcamos la casilla de eje secundario.

ree







En la parte central, tenemos una ventana, llamada combinación personalizada, donde vemos una vista previa, y, podemos ver como ahora si se ven los porcentajes.

ree












Aceptamos, y, ya lo tenemos.

ree










Pero, vemos que no pone los nombres de los años, cosa que es correcta, porque no se lo hemos indicado, pone 1, 2, y, 3.


Pues vamos a cambiarlo.


Hacemos clic en seleccionar datos.


Vemos de donde salen estos valores.

ree













Pues, hacemos clic en editar.


Se abre la ventana rótulos del eje, pues hacemos clic en el siguiente icono.

ree






Señalamos los valores que van a componer las categorías.

ree








Aceptamos.


Aceptamos, de nuevo.


Ya tenemos los nombres de los años.

ree













Vamos a bajar un poco la línea de los porcentajes.


Para ello, hacemos doble clic sobre el eje vertical del eje secundario.

ree











A la derecha, se abre la ventana de dar formato a eje.


Hacemos clic en el siguiente icono.

ree







Dentro de opciones de eje, vemos que como mínimo pone 0, y, como máximo pone 0,4.

ree







Pues, voy a poner como máximo 0,5.


Podemos ver cómo ha bajado.

ree












Por último, vamos a añadirle líneas de unión, estas líneas van desde cada punto del grafico de líneas, hasta cada categoría.


Para ello, vamos a la pestaña, teniendo el grafico de líneas seleccionado, diseño de gráfico, hay un grupo llamado diseños de gráfico, pues desplegamos agregar elemento de gráfico, se abre una ventana con una serie de opciones, nos movemos hasta líneas, se despliega a la derecha un menú, donde elegimos líneas de unión.

ree


















Ya lo tenemos.


Hacemos doble clic sobre una de las líneas de unión, elegimos línea sólida, le damos un color negro, y, cambiamos el ancho.

ree

















Quitamos el borde al gráfico.

ree













Quitamos líneas de cuadricula.

ree







Con esto, damos por finalizado nuestro ejemplo.


ree

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page