Tips Power Query. Dividir diferentes tablas de un Excel que están en una misma hoja.

Tips Power Query. Dividir diferentes tablas de un Excel que están en una misma hoja.

Partimos del siguiente requerimiento.

Tenemos un Excel con la siguiente información y partimos de la idea de que el Excel puede sufrir modificaciones a nivel de inclusión de nuevas filas en las diferentes tablas:

¿Como podríamos dinámicamente aislar las diferentes tablas partiendo de que lo que no va a cambiar es el nombre de la columna 1 que identifica la línea de encabezados?

Como tenemos que dividirlo en tres tablas lo primero que vamos a hacer es duplicar la tabla 3 veces.

En la primera tabla vamos a ver qué código necesitamos para extraer todas las filas dinámicamente desde Rate hasta Tolerancia sin incluir la fila de Tolerancia.

1º Extraemos la posición de la fila “Rate”

Insertamos paso después del último

Renombramos este paso como Rate

2º Extraemos la posición de la fila “Tolerancia”

Insertamos un nuevo paso

Renombramos este paso como “Tolerancia”

Pues bien, para crear la tabla con el rango de manera dinámica a partir de las posiciones de inicio y fin, simplemente vamos a utilizar la función Table.Range de la siguiente forma. Creamos un nuevo paso como éste:

Estamos indicando que el rango de la tabla que tiene que devolver empieza en la Posición de “Rate” y tiene que tener tantas filas como existan entre Rate y Tolerancia.

Veamos el mismo proceso con la tabla de Tolerancia:

Para el inicio de la tabla buscamos la posición de “Tolerancia”

Para poder contar el número de filas sacamos la posición del inicio de la siguiente tabla que es Caudal

Y establecemos el Table.Range

En la última tabla, sin embargo, simplemente extraeremos la Posición de Caudal

Y a partir de esa posición realizaremos un Table.Skip

La ventaja de la utilización de este tip es que si se añaden líneas en cualquier parte de la hoja de Excel, porque haya nuevos datos de caudales o de Tolerancia o de Rate, las tablas se adaptarán dinámicamente a esos cambios

Inserto nuevas líneas en el Excel

Actualizo y las tablas se adaptan dinámicamente sin errores

Contiene 3 filas más que la inicial tras actualizar
Contiene 2 filas más que se han incluido en el excel

En resumen:

Con la utilización de la función List.Positionof podemos extraer la posición de el primer miembro de una lista

Y con Table.Range y Table.Skip más el número de las posiciones que puede cambiar dinámicamente si se introduce nueva información, podemos mantener diferentes tablas que se encuentren en una misma hoja de excel si en el origen o aparecen como tablas diferentes.

Francisco Mullor Cabrera

5 comentarios

Tomás Coleto Publicado el5:50 pm - 21/02/2021

Sencillo y práctico. Muchas gracias.

Tomás Coleto Publicado el6:00 pm - 21/02/2021

Pregunta. » = List.PositionOf(Resultados_Sheet[Column1],»Rate») » ¿Se puede hacer referencia a la columna 1 de alguna otra manera que no sea solo por el nombre de la columna? No se Por ejemplo… = List.PositionOf(Resultados_Sheet{0},»Rate»)

Marcos Conde Núñez Publicado el6:14 pm - 23/02/2021

Excelente información Gracias

Jorge Prado Publicado el1:45 am - 06/03/2021

Que pasa si tienes dos nombres iguales en la misma columna. Como se identofica cual es el primero y cual es el segundo

    Francisco Mullor Publicado el12:19 pm - 06/03/2021

    Evidentemente en el contexto que sirve esta técnica es en el que lo he planteado. Si tienes una hoja de excel donde una misma tabla te separa los registros poniendoles el mismo nombre el problema lo tienes en tus datos de origen.

Deja una respuesta