top of page
Foto del escritorJaime Franco Jimenez

Filtrar por mas de una columna

Para el siguiente ejemplo, seguimos trabajando con el modelo que usamos habitualmente.











El modelo esta en formato de tabla, y, se llama Ventas.


En la celda S2, nos vamos a traer las provincias únicas, y, ordenamos.


=ORDENAR(UNICOS(Ventas[Provincia]))


En la celda T2, nos traemos los centros únicos.


=UNICOS(Ventas[Centro])


En la celda U2, nos traemos los productos únicos.


=UNICOS(Ventas[Producto])


En la celda I2 vamos a crear una lista desplegable a través de una validación de datos de las provincias, para ello, vamos a la pestaña datos, dentro del grupo herramientas de datos, hacemos clic en validación de datos.









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














Aceptamos, seguimos los pasos anteriores, y, creamos dos listas desplegables más, una para centro, y, otra para producto.


Vamos a usar la función FILTRAR, pero si filtramos por tres criterios, provincia, centro, y, producto, y, por ejemplo, solo tenemos seleccionada una provincia, la función FILTRAR nos devolverá error, por lo que vamos a usar LET, para crear variables con las posibles condiciones.


En la celda I5, ponemos LET, como argumento nombre1, declaramos una variable, punto y coma, como argumento calculo, usamos FILTRAR, como argumento array, ponemos la tabla Ventas, como argumento include, ponemos la columna provincia, y, la igualamos al valor de la celda I2,


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2)


Punto y coma, como argumento nombre2, ponemos la variable “a” para probarla.


Cerramos paréntesis.














Obtenemos una matriz desbordada de la tabla Ventas filtrada por la provincia seleccionada.


Borramos el argumento nombre2, declaramos otra variable, volvemos a usar la función FILTRAR, donde como argumento array, volvemos a seleccionar la tabla Ventas, abrimos un paréntesis para poner la primera condición, seleccionamos la columna provincia y la igualamos a la provincia seleccionada, cerramos paréntesis, ponemos el símbolo de asterisco, abrimos otro paréntesis, seleccionamos la columna de centro, y, la igualamos al valor de la celda J2, que es la lista desplegable de centro, cerramos paréntesis, cerramos paréntesis de FILTRAR.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2))


Punto y coma, como argumento nombre3, ponemos la variable “b” para probarla.


Cerramos paréntesis.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));b)


Aceptamos, y, tenemos el modelo filtrado por la provincia y centro seleccionada.












Borramos el argumento nombre3, declaramos otra variable, podemos copiar la función FILTRAR anterior, solo debemos de añadir una nueva condición, por lo que borramos el paréntesis de cierre de FILTRAR, ponemos el símbolo de asterisco, abrimos otro paréntesis, seleccionamos la columna de producto, la igualamos al valor de la celda K2, cerramos paréntesis de condición, cerramos paréntesis de FILTRAR.


Punto y coma, como argumento calculo, vamos a usar el condicional SI, donde como argumento prueba lógica, ponemos el operador lógico Y, como argumento valor logico1, seleccionamos la celda I2 y la igualamos a nada, punto y coma, como argumento valor lógico2, seleccionamos la celda J2 y la igualamos a nada, punto y coma, como argumento valor logico3, seleccionamos la celda K2, y, la igualamos a nada, cerramos paréntesis del operador lógico Y, es decir, la primera condición es que las tres celdas estén vacías, no se haya seleccionado ningún valor.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="")


Punto y coma, como argumento valor si verdadero, ponemos, por ejemplo, sin filtro.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro"


Punto y coma, como argumento valor si falso, usamos otro condicional SI, donde como prueba lógica, volvemos a usar el operador lógico Y, pero en este caso, preguntamos si el valor de la celda I2 es diferente a blanco, si J2 es igual a nada, y, si K2 es igual a nada, es decir, se ha seleccionado una provincia.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro";SI(Y(I2<>"";J2="";K2="")


Punto y coma, como argumento valor si verdadero de este segundo SI, ponemos la variable “a”, es decir, que filtre el modelo por la provincia seleccionada.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro";SI(Y(I2<>"";J2="";K2="");a


Punto y coma, como argumento valor si falso de este segundo SI, preguntamos si el valor de la celda I2 es diferente a blanco, si el valor de la celda J2 es diferente a blanco, y, si el valor de la celda K2 es igual a nada, es decir, hay una provincia y centro seleccionados, en ese caso, que nos devuelva la variable “b”.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro";SI(Y(I2<>"";J2="";K2="");a;SI(Y(I2<>"";J2<>"";K2="");b


Punto y coma, como argumento valor si falso de este tercer SI, preguntamos si el valor de la celda I2 es diferente a blanco, si el valor de la celda J2 es diferente a blanco, y, si el valor de la celda K2 es diferente a blanco, es decir, hay una provincia, centro, y, producto seleccionados, en ese caso, que nos devuelva la variable “c”.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro";SI(Y(I2<>"";J2="";K2="");a;SI(Y(I2<>"";J2<>"";K2="");b;SI(Y(I2<>"";J2<>"";K2<>"");c


Cerramos paréntesis de los condicionales y de la función LET.


=LET(a;FILTRAR(Ventas;Ventas[Provincia]=I2);b;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2));c;FILTRAR(Ventas;(Ventas[Provincia]=I2)*(Ventas[Centro]=J2)*(Ventas[Producto]=K2));SI(Y(I2="";J2="";K2="");"Sin filtro";SI(Y(I2<>"";J2="";K2="");a;SI(Y(I2<>"";J2<>"";K2="");b;SI(Y(I2<>"";J2<>"";K2<>"");c)))))


Aceptamos, si no tenemos ningún dato seleccionado, vemos que aparece sin filtro.








Seleccionamos una provincia, y, vemos que se filtra por la provincia seleccionada.












Seleccionamos un centro, vemos que se filtra por la provincia y centro seleccionado.











Seleccionamos un producto y vemos que se filtra por los tres campos.













En la celda L2, queremos que aparezca el total de los datos filtrados, para ello, usamos la función SUMA, como argumento usamos INDICE, como argumento matriz_tabla, ponemos I5 seguido del operador de rango derramado (#), omitimos el argumento numero de fila, y, como argumento numero de columna ponemos 7, que es el encabezado total.


Cerramos paréntesis.


=SUMA(INDICE(I5#;;7))


Aceptamos, y, ya lo tenemos, pero si no tenemos datos seleccionados, nos aparece un error, por lo que vamos a usar la función SI.ERROR, como argumento valor es la expresión anterior, como argumento valor si error, ponemos un texto en blanco.


Cerramos paréntesis.


=SI.ERROR(SUMA(INDICE(I5#;;7));"")


En la celda I4, nos traemos los encabezados.


=Ventas[#Encabezados]





Miguel Angel Franco

2 visualizaciones0 comentarios

Entradas recientes

Ver todo

Comments


bottom of page