jueves, 8 de septiembre de 2022

Anexar todas las tablas de un libro con funciones

Un nuevo ejemplo de potencial de Excel es la respuesta, empleando solo funciones, a anexar todas las tablas de un mismo libro de manera autom谩tica.

Una posible soluci贸n a este problema es emplear Power Query, como ya se public贸 en este art铆culo del blog.

Hoy conseguiremos el mismo resultado pero empleando algunas de 'catorce funciones':
AJUSTARFILAS, DIVIDIRTEXTO o ENFILA
Junto a otras igual de potentes como:
LET, UNIRCADENAS, MAP o LAMBDA

Te recomiendo leas previamente, antes de continuar, el art铆culo siguiente, donde se desarrolla un ejercicio que nos servir谩 para alcanzar nuestra meta.

Adicionalmente deber谩s entender el uso de las funciones macro 4.0 (leer art铆culo).

El uso de una funci贸n macro 4.0 particular es fundamental.
La funci贸n NAMES - NOMBRES(nombre_documento/archivo; tipo; criterio)
La funci贸n devuelve un vector, ordenado alfab茅ticamente, con los nombres definidos incluidos en el libro de trabajo descrito...
Sabiendo que:
-si omitimos el primer argumento, trabajaremos sobre el libro activo.
-el argumento tipo admite tres valores:
1-solo lista 'nombres normales'
2-nombres definidos ocultos
3-todos los nombres
-el tercer argumento de criterio, que permite el uso de comodines, permite identificar los nombres a recuperar

Llegados a este punto es importante resaltar un aspecto clave...
La funci贸n macr 4.0 'NOMBRES' trabaja exclusivamente sobre nombres definidos, NO sobre tablas (tiene sentido por que las Tablas aparecieron mucho despu茅s de la existenca/descatalogaci贸n de las macro 4.0)...
Asi que para que el trabajo se realice correctamente, a cada tabla habr谩 que asignarle un nombre definido!!
Un peque帽o precio a pagar...

Vamos con el ejercicio...Partimos de dos tablas iniciales: TblUNO y TblDOS, a las cuales he asignado sendos nombres definidos: datosUNO y datosDOS respectivamente...
Notemos el patr贸n tomado a la hora de asignar nombres definidos, incluyendo un prefijo igual en ambas tablas (esto es clave).
Anexar todas las tablas de un libro con funciones


Todo comienza creando una funci贸n LAMBDA personalizada que trabaje con la funci贸n macro 4.0 'NOMBRES'. Por tanto abrimos nuestro Administrador de nombres definidos e incluimos la siguiente f贸rmula, renombr谩ndola como 'fxNAMES':
=LAMBDA(criterio;NOMBRES(;3;criterio))
Anexar todas las tablas de un libro con funciones


Si utilizamos esta funci贸n directamente en una celda, por ejemplo en H2 y escribimos:
=TRANSPONER(fxNAMES("datos*"))&T(AHORA())
tendr铆amos un vector vertical 'vol谩til' con los nombres definidos en el libro activo que comiencen por el prefijo 'datos'...

Comprobado el resultado de esta funci贸n, ya podemos montar nuestra f贸rmula en E2 para obtener una matriz resultante de anexar las tablas-nombres definidos deseados:
=LET(rngs;TRANSPONER(fxNAMES("datos*"))&T(AHORA());
datos;UNIRCADENAS(";";;MAP(rngs;
                           LAMBDA(tbl;" "&ENFILA(MATRIZATEXTO( INDIRECTO(tbl);0) ))));

AJUSTARFILAS(EXTRAE(DIVIDIRTEXTO(datos;;";");2;LARGO(datos));2;"-"))

Versi贸n reducida de la comentada en el art铆culo arriba indicado

La f贸rmula recorre los elementos obtenidos con nuestra funci贸n macro 4.0 (nombres definidos que empiecen por 'datos') para descomponerlos en sus distintos elementos con MATRIZATEXTO, trasladarlo a un vector fila (con la funci贸n ENFILA).
La funci贸n MAP se encarga de recorrer los distintos vectores obtenidos con ENFILA (un vector por cada nombre definido).
Y UNIRCADENAS nos permite concatenar en un 煤nico vector todos los elementos... Ser谩 finalmente DIVIDIRTEXTO quien 'separe' esa cadena de texto en un nuevo y 煤nico vector que AJUSTARFILAS devolver谩 en una matriz de dos columnas.

La f贸rmula se podr铆a completar incluyendo encabezados o incluso fila de totales. Te remito al art铆culo anterior.

Puedes comprobar que al a帽adir nuevas tablas: 'TblTRES' y 'TblCUATRO', habi茅ndoles asignados nombres definidos: datosTRES y datosCUATRO, autom谩ticamente aparecer谩n anexados!!
Anexar todas las tablas de un libro con funciones


Increible soluci贸n sin salir del entorno de la hoja de c谩lculo!!

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.