Table.SelectRows, y, List.Contains
- Jaime Franco Jimenez

- 10 dic 2022
- 3 Min. de lectura
Vamos a trabajar con el modelo que suelo usar habitualmente, ventas de productos en diferentes centros comerciales, provincias, y, fechas.
Este modelo esta en formato de tabla, y, se llama ventas.

Tenemos otra hoja donde tenemos tres provincias, esta en formato de tabla, y, se llama provincias.

Desde Power Query, vamos a filtrar la tabla ventas por estas tres provincias.
Vamos a crear una consulta en blanco, para ello, vamos a la pestaña de datos, dentro de obtener y transformar, desplegamos obtener datos, desplegamos de otras fuentes, y, seleccionamos consulta en blanco.

En la barra de fórmulas, ponemos:

Nos va a traer todas las tablas del libro.

Voy a duplicar esta consulta, para ello, hacemos clic con botón alternativo de raton sobre la consulta, y, seleccionamos duplicar.

Hago doble clic sobre la primera consulta, y, le pongo como nombre ventas, y, a la segunda consulta le pongo como nombre provincias.

Selecciono la consulta ventas, y, hacemos clic Table de ventas.

Ya tenemos cargada la tabla ventas.
Seleccionamos la segunda consulta, y, hacemos clic en Table de provincias, y, ya tenemos las dos consultas cargadas.
En la consulta ventas, selecciono la columna fecha, dejo pulsada la tecla SHIFT y selecciono la columna producto, quedaran seleccionadas las columnas fechas, provincia, centro, y, producto.
Clic con botón secundario del raton, y, seleccionamos agrupar por.

Se abre la ventana de agrupar por, donde vemos las cuatro columnas.

En la ventana nuevo nombre de columna, voy a poner totales, en la ventana operación, seleccionamos suma, y, en la ventana columna, seleccionamos la columna de total.

Vamos a obtener el total por fecha, provincia, centro, y, producto.
Aceptamos.

Hasta este punto, aparecen todas las provincias, aún no hemos filtrado.
Seleccionamos la consulta provincias, vamos a la pestaña de transformar, y, seleccionamos convertir en lista.

Ahora, tenemos una lista de valores, si nos fijamos en el icono de la consulta, podemos ver cómo ha cambiado.

Vamos a agregar un nuevo paso, para ello, hacemos clic en:

Aparece el ultimo paso, pero esto, no quiere decir que debamos de trabajar con el ultimo paso, podemos seleccionar cualquier otro paso, pero en este caso, nos quedamos con el último paso.

Para realizar nuestro filtro vamos a usar dos funciones, que son Table.SelectRows, y, List.Contains.
La funcion Table.SelectRows devuelve una tabla de filas que coincide con una condición.
Sintaxis
Table.SelectRows(table as table, condition as function) as table
El argumento table es la tabla con la que vamos a trabajar, en este caso, es el ultimo paso, cada paso es una tabla.
= Table.SelectRows(#"Filas agrupadas"
Coma, ahora, ponemos la palabra Each (para cada).
= Table.SelectRows(#"Filas agrupadas", each
Debemos de trabajar con una lista, que son las provincias por las que vamos a filtrar, que anteriormente, convertimos en lista, por lo que, como argumento condición, vamos a usar la funcion List.Contains, que indica si una lista contiene un valor, en caso contrario, devuelve FALSO.
Esta funcion devuelve un valor lógico, VERDADERO, o, FALSO.
Sintaxis
List.Contains(list as list, value as any, optional equationCriteria as any) as logical
Después de la palabra Each, ponemos List.Contains, y, abrimos un paréntesis.
El primer argumento es list, que es la lista con la que vamos a trabajar, dicha lista es la consulta provincias.
= Table.SelectRows(#"Filas agrupadas", each List.Contains(Provincias)
Coma, como argumento value ponemos la columna provincia entre corchetes.
= Table.SelectRows(#"Filas agrupadas", each List.Contains(Provincias, [Provincia]
Cerramos paréntesis de List.Contains, y, Table.SelectRows.
= Table.SelectRows(#"Filas agrupadas", each List.Contains(Provincias, [Provincia]))
Aceptamos, y, ya tenemos filtrado la consulta ventas por las tres provincias, si desplegamos el filtro de la columna provincia, vemos que solo aparecen estas tres provincias.

Cerramos y cargamos como una conexión.
Vemos que aparecen las dos consultas en la ventana de consultas y conexiones.

Hacemos clic con botón secundario de raton sobre la consulta ventas, y, seleccionamos cargar en.

Se abre la ventana de importar datos, seleccionamos tabla, y, hoja de calculo nueva.

Aceptamos.
Ya tenemos nuestro modelo en Excel.

Ahora, vamos a crear una tabla dinámica, para ello, con una celda dentro del modelo, vamos a la pestaña de insertar, hacemos clic en tabla dinámica.

En la ventana que se abre, seleccionamos hoja de calculo existente, y, la ponemos al lado del modelo.

Aceptamos.
Llevo a filas, provincia y centro, y, a valores, la columna de totales.

Vamos a la pestaña de diseño, desplegamos diseño de informe, y, seleccionamos mostrar en formato tabular.

Tenemos nuestra tabla resumen por provincia y centro.

Voy a ir a la hoja de provincias, y, añado una nueva.

De momento, nada se ha actualizado, para actualizar el modelo, vamos a la pestaña de datos, y, hacemos clic

Si desplegamos la columna de provincia, vemos que aparecen las cuatro provincias.

Al actualizar el modelo se actualiza la tabla dinámica.
Pues, ya tenemos nuestro ejercicio resuelto.





Comentarios