|
Pues simplemente tienes que poner esta formula (modificandola para tu caso) en un boton o en cualquier cosa:
For Each celdita In ActiveSheet.Range("b5", Range("b5").End(xlDown))
celdita.Offset(0, 1).FormulaR1C1 = "=VLOOKUP(RC[-1],Hoja2!C[-1]:C,2,FALSE)"
Next celdita
Te explico para que la puedas modificar según tus necesidades.
El For each es un bucle que se recorre todas las celdas con códigos, ya que es lo que sabemos que existe, en mi caso los tenia apartir de la celda b5, es decir, en la celda b5 tenía el primer código conocido. Como no se cuantos códigos tengo lo que hago es que continuo el bucle hasta el último dato que hay debajo de b5, esto tiene el inconveniente de que si hay una celda en medio vacia se pararía ahi, por ello tienen que estar todos los códigos sin huecos en medio. Es decir los códigos tienen que ir de b5 a b500 seguidos, si en b200 no hay metido un código se pararia ahi el bucle.
celdita.offset(0,1) simplemente indica que en la celda de la derecha (0,1) se ponga la formula que va a continuación del =.
Si en tu caso la formula te la tiene que poner dos celdas a la derecha pues seria 0,2 si son diez pues 0,10, si es en la celda de la izquierda simplemente le pones el simbolo menos - , delante del número. El 0 lo que indica es la fila, asi que ahi no tendrás que cambiar nada y será siempre 0 que indica que es en la misma fila.
Sobre la formula:
"=VLOOKUP(RC[-1],Hoja2!C[-1]:C,2,FALSE)"
Es el BuscarV normal, pero observaras que aparece "distinta" eso es porque al meterla desde visual hay que escribirla de esa manera.
Vlookup es el buscarV, luego entre parentesis aparecen los campos normales.
RC[-1] es el dato que vamos a buscar, aqui al igual que en el offset, se indica todo por filas y columnas. Se supone que el dato que vamos a buscar esta en la misma fila, pero en distinta columna, con lo cual siempre será RC["algo"], como explique antes, si el dato que buscamos esta justo a la izquierda pues es C[-1] si esta dos columnas a la izquierda pues -2 si esta en la columna de la derecha pues seria 1 sin el simbolo de negativo...
El segundo parametro es donde lo vamos a buscar.
Hoja2!C[-1]:C
En este caso lo que hice fué que los nombres de los articulos (o lo que estes buscando) se encuentran en otra hoja, Hoja2 es el nombre de la hoja donde se encuentran, tu tendrás que sustituirlo por el nombre de tu hoja, el simbolo ! es obligatorio al tener que cambiar de hoja. después vuelve a ser lo mismo de siempre, referencias por filas y columnas, en este caso una C sola indica que es la misma columna, aqui es donde puede haber mas complicaciones, a si que lo explicare lo mejor que pueda para que no tengas ninguna duda.
Con esta macro vamos a hacer que meta en una celda en concreto que se encuentra en una fila y una columna (indicado por las letras y los números) pues bien, si en esta formula ponemos solo la C indica que estamos haciendo referencia a la misma columna en la que se encuentra la formula, y el -1 que es la anterior.
Imaginate que la formula la vamos a meter en la celda B5 pues con Hoja2!C[-1]:C estamos haciendo referencia a que busque en A y B, seria como poner en excel normal:
buscarv(a5:Hoja2!A:B;2;falso).
Ahi tendrás que modificarlo tu tambien según donde se encuentre la lista con los artículos y su nombre.
Sobre el 2 y el false, es como en excel normal, 2 nos indica cual es la columna que nos tiene que devolver y el falso es que en caso de que las celdas estuvieran ordenadas por algún criterio, lo ignoraria y devuelve el valor correcto.
Cualquier duda aqui estoy, no te olvides en cerrar la pregunta una vez se te haya solucionado la duda, gracias.
|