sábado, 21 de julio de 2012

Obtener Datos de Otro Libro de Excel




Me tome la libertad de investigar acerca de este tema para generar una nota que diera una respuesta contundente al título ¡Juzguen ustedes!

En realidad lo que se pretende es consultar información desde un libro de consulta, a partir de otro libro que contiene la base de datos; además, se pretende que al actualizar la base de datos, automáticamente se actualice la información en el libro de consulta.

Primero construimos nuestra base de datos. El nombre del libro: base_datos




Ahora, generamos nuestro libro de consulta (consulta xls).




Debo mencionar que en el marco de esta nota he decidido generar consulta de dos formas:

1. Usando una lista desplegable de controles de formulario (mi favorita).

Entonces, instalamos el control. Posteriormente, generamos un nombre que hará que aparezca el nombre del libro actualizado; siempre que los dos libros estén abiertos. Aplica para las dos formas de consultar.

El nombre es libro1
Teniendo los dos libros abiertos, y desde el libro de consulta generamos el nombre.


=DESREF([base_datos.xlsx]Hoja1!$A$2;0;0;CONTARA([base_datos.xlsx]Hoja1!$A:$A);1)
Explicación: punto de referencia Hoja 1 del libro base_datos, celda A2, desviación en filas y columnas no. Contar celdas no vacías en la columna A de la Hoja 1 del libro base_datos (Alto de filas), finalmente una columna de ancho.

Damos click derecho sobre el control de formulario.



En el rango de entrada tecleamos el nombre anteriormente creado, y en el campo vincular con la celda elegimos para nuestro caso la celda A5 (esta es la referencia de fila que nos ofrece el control).

Finalmente, para consultar el precio del libro usamos la función Índice así:
Reitero que para formular esto, se deben tener los dos libros abiertos.
=INDICE([base_datos.xlsx]Hoja1!$B$2:$B$1048576;A5)

Explicación: en este punto sólo necesitamos conocer la matriz en donde buscar, y el número de fila(celda A5 referenciada en formato de control).

He referenciado el total de filas de la columna B para actualizar de manera automática los precios.



El resultado:




2. Usando una celda validada de la opción Datos-Validación de datos.

En el campo Origen ponemos el nombre libro1; aquí lo podemos teclear o llamar con la tecla F3.


La diferencia notable respecto del método anterior es que usaremos la función BuscarV o ConsultaV para consultar el precio del libro.

=BUSCARV(B6;[base_datos.xlsx]Hoja1!$A$2:$E$1048576;2;FALSO)


!Comparemos los dos métodos¡



Finalmente, como recordaremos, he mencionado que para que las listas de los nombres de los libros funcionen y se actualicen automáticamente, deben estar abiertos los dos libros; entonces sería poco práctico tener que  abrir los dos libros para ingresar nuevas referencias de libros, por lo que haremos que el libro de la base de datos se abra automáticamente cada vez que abramos el libro de consulta, además haremos que la ventana activa siempre sea el de consulta.

En el libro de consulta abrimos el editor de VB (Alt+F11), y en el objeto ThisWorkbook (del panel de la izquierda) agregamos el siguiente código:


El resultado:



Por último se recomienda que los dos libros estén en el mismo directorio.








No hay comentarios.:

Publicar un comentario