Excel: Creá una macro para buscar información en una carpeta

Esta macro arma en la celda [A3] una función de búsqueda que trae el nombre correspondiente al legajo de la celda [A1] según la tabla del archivo Base.xlsx que está en la carpeta indicada en la celda [A2].
VIE, 24 / JUN / 2016

La función BUSCARV busca un dato en una tabla. Por ejemplo, supongamos que en [A1:B10] tenemos legajo y nombre. Si escribimos un legajo cualquiera en [D1] podemos saber el nombre a quien le corresponde con la función =BUSCARV(D1;A1:B10;2). Hay tres argumentos entre los paréntesis:

-El primero es el legajo cuyo nombre estamos buscando.

-El segundo es el rango de la tabla que vincula legajo y nombre.

-El tercero indica que el dato que estamos buscando (el nombre) está en la segunda columna de la tabla.

Ahora que sabemos cómo trabaja esta función, veamos el problema planteado en la consulta. Sabiendo que la tabla de búsqueda (segundo argumento de la función) se encuentra en otro libro. Eso no es problema. Si por ejemplo, la tabla estuviera en el rango [A1:B5] de la Hoja1 del libro Base.xlsx que está en Mis Documentos\Enero la función se escribiría: =BUSCARV(D1;‘C:\Mis Documentos\ Enero\[Base.xlsx]Hoja1’!A1:5;2).
Dentro de esta fórmula, la referencia al rango de la tabla tiene cuatro partes:

-La ruta de la carpeta que contiene el libro.

-El nombre del libro, con extensión y entre corchetes.

-El nombre de la hoja donde está la tabla.

-El rango de la tabla, precedido por un signo de exclamación.
Según el lector, la ruta de la carpeta se encuentra en una celda, de modo que, al cambiar el dato en la celda, cambia la búsqueda. En principio, las fórmulas con un rango que está escrito en otra celda se resuelven con la función INDIRECTO. Pero, para usar esa función en vínculos a otros libros, esos libros deben estar abiertos. No es el caso del problema que plantea el lector. La solución adecuada es una macro que escriba la función en la celda. Vamos a suponer que:

-Los libros que contienen las tablas se llaman todos Base.xlsx.

-Las tablas ocupan el rango [A1:B5] de la Hoja1 de cada libro.

-Los libros están en subcarpetas llamadas Enero, Febrero, Marzo, etc., dentro de la carpeta Mis Documentos.
Los datos variables son:

-En [A1], el legajo cuyo nombre estamos buscando.

-En [A2], la carpeta que contiene la tabla a consultar.

-En [A3], la función BUSCARV que será armada por la macro.

La macro es la siguiente:

Sub Busqueda ()
carpeta = [A2]
ruta = “’C:\ Mis documentos\” + carpeta tabla = ruta + “\[Base.xlsx] Hoja1’!A1:B5”
Range(“A3”).
Formula = “=VLOOKUP(A1,” + tabla + “,2)”
End Sub
-La macro comienza leyendo la subcarpeta de la celda [A2].

-Luego concatena esta subcarpeta con la ruta común a todas, Mis documentos.

-Luego arma la dirección de la tabla concatenado la ruta al nombre del archivo, al de la hoja y a las coordenadas de la tabla, según las reglas explicadas antes.

-Finalmente, escribe en [A3] la función BUSCARV con los argumentos correspondientes.
El nombre de la función, dentro de la macro, es VLOOKUP que es como se llama la función BUSCARV en inglés. En el código de las macros, se respetan nombres y sintaxis en inglés. Por eso el separador de argumentos es coma y no punto y coma. Cada vez que modificamos la subcarpeta en [A2] tenemos que re ejecutar la macro para actualizar la fórmula. Podemos hacer que la macro se ejecute automáticamente al modificar la celda [A2] mediante técnicas de macros automáticas.

¡Comparte esta noticia!

Últimos lanzamientos Ver más