Función BUSCARV en Excel con ruta relativa
Resuelto
Hasaran
-
Hasaran -
Hasaran -
Hola,
Me gustaría usar la función BUSCARV de Excel llamando a una matriz mediante una ruta relativa.
BUSCARV(variable;'C:\ruta\[archivo.xls]Hoja1'!$C$4:$N$499;10;FALSO)
He creado una macro que me da en la celda A1 la ubicación de mis hojas de cálculo (gracias a ActiveWorkbook.Path).
Luego concateno este resultado (C:\ruta) de esta manera:
CONCATENAR("'";A1;"\[archivo.xls]Hoja1'!$C$4:$N$499")
en la celda A2.
Pero cuando vuelvo a escribir mi función BUSCARV así:
BUSCARV(variable;A2;10;FALSO)
la celda devuelve #N/A
¿Cómo podría resolver este problema?
Me gustaría usar la función BUSCARV de Excel llamando a una matriz mediante una ruta relativa.
BUSCARV(variable;'C:\ruta\[archivo.xls]Hoja1'!$C$4:$N$499;10;FALSO)
He creado una macro que me da en la celda A1 la ubicación de mis hojas de cálculo (gracias a ActiveWorkbook.Path).
Luego concateno este resultado (C:\ruta) de esta manera:
CONCATENAR("'";A1;"\[archivo.xls]Hoja1'!$C$4:$N$499")
en la celda A2.
Pero cuando vuelvo a escribir mi función BUSCARV así:
BUSCARV(variable;A2;10;FALSO)
la celda devuelve #N/A
¿Cómo podría resolver este problema?
Configuración: Excel 2003
4 respuestas
-
Hola,
Gracias por la información.
En el sentido de que los dos cuadernos están en la misma carpeta, use su fórmula:
BUSCARV (variable;'C:\chemin\[fichier.xls]Onglet1'!$C$4:$N$499;10;FALSO), que funcionará incluso si el libro fuente está cerrado.
La otra solución con la función [INDIRECT] exige que el libro fuente también esté abierto. Si no está abierto en memoria, la función devuelve un valor de error #REF!.
Para usar esta posibilidad:
En el libro de destino colocar en formato texto en una celda:
A1=C:\chemin\[fichier.xls]Onglet1
A2 = C4:N499
y la función INDIRECT a insertar en BUSCARV se convierte en: INDIRECT("'"& A1 &"'!"&A2)
--
Saludos.
Jean-Pierre -
Quizás con la función INDIRECTA?
--
Está bien, la jubilación! Sobre todo en las Antillas... :-)
☻ Raymond ♂ -
Hola,
A la espera de tu respuesta, la celda [A2] contiene la ruta de tu matriz, así que pon directamente: INDIRECT($A$2) !
¿La matriz ('C:\ruta\[archivo.xls]Hoja1'!$C$4:$N-$499) sigue siendo la misma?
¿Tu fórmula: BUSCARV(variable;'C:\ruta\[archivo.xls]Hoja1'!$C$4:$N-$499;10,FALSO)
¿funciona? Sí o No?
--
Saludos.
Jean-Pierre -
Hola.
Si entiendo bien todo, la matriz que contiene los datos no está en la misma carpeta (archivo) que la hoja donde se encuentra la fórmula de búsqueda. En ese caso, recordemos que es IMPRESCINDIBLE que ese primer archivo esté abierto para que la búsqueda se realice.
No he entendido por qué escribes INDIRECT($A$3) cuando el contenido de A3 parece ser =A2. ¡Entonces bastaría con escribir INDIRECT(A2)!
En cuanto al contenido de A2, no he entendido muy bien lo que quieres hacer: no veo el significado de 'A1\ en 'A1\[fichier.xls]onglet1'!$C$4:$N$499 Pero ya que dices que “funciona fuera de la función BUSCARV”, debo suponer que es correcto...
Última observación: siempre es aconsejable dar un nombre a la matriz de datos; así si pones el nombre "Matr" al rango C4:N499 de la hoja onglet1 del archivo fichier.xls, la escritura de tu fórmula se simplifica a 'A1\[fichier.xls]Matr
--
Cuidado: la retirada! Sube a las Antillas... :-)
☻ Raymond ♂-
Hola. La matriz que contiene los datos está, en mi caso, en la misma carpeta pero no en el mismo archivo que la hoja donde se encuentra la fórmula de búsqueda. La búsqueda funciona bien cuando el archivo que contiene los datos está cerrado; la única diferencia que he observado es que Excel me pide actualizar el archivo cuando el que contiene los datos está cerrado. E escribir INDIRECT(A2) no funciona; obtengo el valor #REF! en la celda, tanto al usar INDIRECT dentro de BUSCARV como al colocar INDIRECT en una celda aparte. Mi objetivo principal es poder trabajar en la misma carpeta que los archivos de datos y de trabajo, sin importar dónde esté esa carpeta en el disco duro. Primero quiero separar las etapas: - No habiendo encontrado una fórmula ya hecha para usar una ruta relativa en la función BUSCARV, descubrí que la función ActiveWorkbook.Path utilizada en una macro me permite obtener la ruta absoluta de la carpeta en la que trabajo. Hice que esa ruta se muestre en la celda A1. - Esta celda A1 contiene entonces C:\ruta. - Necesito la ruta completa de la matriz para insertarla en la función BUSCARV. Como el archivo que contiene la matriz está en la misma carpeta que el archivo en el que uso BUSCARV, basta con añadir la parte de la ruta que, por su parte, siempre será la misma: \[archivo.xls]hoja1'!$C$4:$N$499. Así que la concateno con el contenido de la celda A1. - En este punto tengo en la celda A2 la ruta completa de mi matriz, sea cual sea mi carpeta de trabajo: 'C:\ruta\[archivo.xls]hoja1'!$C$4:$N$499 (también tuve que añadir una comilla simple al inicio). - Luego sustituyo la ruta completa de la matriz en la función BUSCARV por A2, que contiene esa ruta. - En cuanto a asignar un nombre a la matriz, me gustaría, si no es problemático para este primer objetivo, olvidarlo, ya que me genera complicaciones.
-