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


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.
5 comentarios