Relacionar datos excel macros

Buena. Quisiera saber si habría una manera de relacionar una tabla en excel con sus celdas respectivamente. Por ejemplo
A B
País Monto
AA 592.73
AB 224.20
AN 6,419.96
AO 2,000.00
Lo que quiero saber, se existe un código que a la hora de buscar un país en su celda respectiva este puede seleccionar la celda de su monto respectivo. Ademas algunas búsquedas no se podrá encontrar el monto porque no estará ese país.

1 Respuesta

Respuesta
1
Si es lo que entiendo se podría realizar de dos formas, una un poquito más engorrosa, seria usando un useform a través de una macro, lo cual no estari mal, la otra seri usando una fórmula, que me parece la más fácil.
Ej supongamos que tienes los países a partir de A3, entonces lo que podrías hacer seria poner en la celda E1 la siguiente fórmula
=si(eserror(coincidir(D1;$A$3:$A$500;0));0;indice($A$3:$B$500;coincidir(D1;$A$3:$A$500;0);2))
Entonces si ingresas en la celda D1 un país te aparecerá el monto, sino esta te aparecerá 0, este valor lo puedes cambiar por "No se encuentra"; reemplazando el 0 que esta en negrita en la fórmula, eso si si escribís algo ingresalo entre "".
Y en el caso, que estuviera en otra hoja esos datos, ¿cómo seria el código en este caso?
si(eserror(coincidir([Libro1.xls]Hoja1!D1;[Libro1.xls]Hoja1!$A$3:$A$500;0));0;indice([Libro1.xls]Hoja1!$A$3:$B$500;
coincidir([Libro1.xls]Hoja1!D1;[Libro1.xls]Hoja1!$A$3:$A$500;0);2))
Solo cambia el nombre del libro y la hoja en donde se encuentran los datos, eso si siempre tienes que abrir el archivo donde están los datos
Sino te resulta avkisame que te paso el email y lo resolvemos
Gracias por el dato.
Tengo también otra duda, me funciona bien el código pero en el caso que quiera hacer ese mismo código pero con diferentes hojas. Por ejemplo tengo 3 hojas con su respectivo nombre. En lugar de estar poniendo cada hoja por código, existe algún código que se utilice una sola vez un código y que abarque a varias hojas
Ejemplo, definir alguna variable y que esta pase por todas las hojas
Dim Ho as excelsheet
si(eserror(coincidir([Libro1.xls]Ho!D1;[Libro1.xls]Ho!$A$3:$A$500;0));0;indice([Libro1.xls]Ho!$A$3:$B$500;
coincidir([Libro1.xls]Ho!D1;[Libro1.xls]Ho!$A$3:$A$500;0);2))
si(eserror(coincidir(b1;indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$a$500");0));0;indice(indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$b$500");coincidir(b1;indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$a$500");0);2))
Prueba esta fórmula solo recuerda que
b1= a lo que buscas
d1= al libro donde estan los datos
e1= a la hoja donde estan los datos
Entonces suponiendo que el libro se llama Libro1, en la celda D1 pondrás Libro1, y si los datos están en una hoja llamada Doble, pondrás en E1 Doble
Asi lo unico que tendrias que hacer seria pegar esta formula para abajo y solo cambiar el nombre del libro y hoja en las celdas correspondientes
Si no entiendes algo avisame
Es de gran ayuda. Y en caso que tengo que hacer eso por columna sin la necesidad de estar cambiando el nombre de la hoja en cada celda.
Por ejemplo, en una hoja nueva, en la Celda B7 se pone la fórmula de búsqueda(el código que sugeriste) relacionada con otra hoja que tiene esos datos, y ahora quiero poner en la celda C7 lo misma pero relacionada con otra hoja de datos. Todo eso mediante código.
Esta vez no entendí muy bien, pero te pregunto haber si es así.
Lo que voz quieres es una fórmula que te traiga los datos de un libro con distinto nombre, ¿pero no quieres cambiar el nombre del libro en cada celda?
Si es esto lo que estas solicitando te comento que por más que lo hagas por una macro tienes que escribir el nombre de la hoja que estas abriendo, si es en una fórmula también lo tienes que hacer ya que excel no sabe lo de la hoja, si las hojas son siempre las mismas, solo vas a tener que escribirlo una vez, ya sea con fórmula o macro.
Ahora si es la misma hoja y siempre esta guardada en el mismo lugar, se puede hacer una macro para que la abra y cierre, pero como te dije antes si los libros cambian los nombres hay que escribirlos siempre sino dará error
Avisame si tu pregunta era esta
La pregunta no era por ahí, pero en caso que quiera utilizar variables para reemplazar las hojas, ¿cómo se tendría que definir para que sea visto como una hoja de excel?
lo unico que tienes que hacer es cambiar el nombre de la hoja en E1
si(eserror(coincidir(b1;indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$a$500");0));0;indice(indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$b$500");coincidir(b1;indirecto("["&d1&".xls"&"]"&e1&"!$a$3:$a$500");0);2))
Osea escribes la hoja que quieres que busque en E1, si quieres cambiar el lugar de escritura solo cambia e1, no se por a1 y entonces escribes en a1 la hoja donde buscar

Añade tu respuesta

Haz clic para o