Macro que compare 2 libros en Excel y copie los datos que coinciden

Tengo un libro llamado reportemaestro.xls donde tengo todos mis datos con un id y en otro libro tengo los datos que se actualizan con un id en común, lo que quiero es comparar el id del libro 1 con el id del libro 2 y que los que los datos que coincidan me los pegue en la columna C

Agrade

1

1 respuesta

Respuesta
1

.

Buenas noches, Yezzi

Leí tu consulta y me preguntaba por qué solicitas una macro cuando me parece que es la típica aplicación de la función BUSCARV(), sobre todo por la existencia de un ID común.

Para hacerlo simple, vamos a suponer que tu listado del libro 2 estuviese en la "Hoja1" y en el rango A6:G240. Algo así como esto:

Y si el primer ID a actualizar estuviera en la celda A4 de tu archivo reportemaestro.xls, escribe ésta fórmula en la celda C4 :

 =BUSCARV($A4;[Libro2.xlsx]Hoja1!$A$6:$G$240;7;FALSO)

Ten en cuenta si usas comas o punto y coma para separar los argumentos. Yo usé ";" en este ejemplo. Asígnale el formato deseado y, luego, copia esta celda y pégala en las restantes de esta misma columna.

Esta fórmula creará un vínculo con el segundo archivo y, cuando abras ambos archivos, te actualizará el valor.

Entonces, la función Buscarv necesita tres argumentos más un cuarto opcional.

El primero es el valor que se busca en la base; ésta, a su vez, es el segundo argumento de la fórmula. El uso del signo $ es para que siempre se refiera a ese rango aún copiando la fórmula a otras celdas/hojas.

El tercer argumento indica qué columna de la base indicada debe ser mostrada donde está la fórmula. Cómo intento mostrar las descripciones, indiqué la columna 7, para que traiga el dato de "Valor nuevo". Si te fijas en la imagen verás que coloqué el número correspondiente a cada columna. Si pegas esta fórmula en otra celda y cambias el número de columna, traerá lo que haya en ella.

Finalmente el cuarto argumento opcional, cuando está en 0 (Falso) obliga a una búsqueda exacta de lo que está en la celda A4. Si no encuentra ese código, la fórmula devolverá #N/A! (No disponible)

Para evitar ese #N/A! puedes usa esta variante que es similar:

=SI(ESNOD(BUSCARV($A4;[Libro2.xlsx]Hoja1!$A$6:$G$240;7;FALSO));"ID inexistente";BUSCARV($A4;[Libro2.xlsx]Hoja1!$A$6:$G$240;7;FALSO))

Bien, esta fórmula devolverá "ID inexistente"; si el código o nombre en la celda A4 no existe en la columna G de la base que creastem, pero si lo encuentra actualiza el valor

Bien, Yezzi, espero que esto te sirva para resolver tu problema (sobre todo a esta hora).

Cualquier duda, vuelve a consultarme, ¿si?

Saludos

Fernando

(Buenos Aires, Argentina)

.

Hola Fer,

antes que nada muchas gracias por tu ayuda pero el problema es que no quiero estar haciendo eso cada vez que me envíen una actualización y pasarlo al mío, diario hago ese proceso y ahora solo quiero que  al ejecutar la macro me olvide de que tengo que hacerlo más de 3 veces al día, por ello quiero hacerlo mediante un macro

.

Ok, Yezzi

Precisamente, el hecho de dejarlo con fórmulas vinculadas hace que se actualice con los nuevos valores que traigas. Lo que contenga el Libro2 se verá instaneamente actualizado en el primero cuando abras ambos.

Aunque se desarrolle una macro que supla lo que hace buscarv, igual tendrías que ejecutarla cada vez para tener algo que la fórmula ya hace automáticamente.

Puede ser que yo no haya entendido bien la estructura de tus archivos o que no me haya dado a entender claramente.

Te sugiero que hagas una prueba con la fórmula y le des una oportunidad.

Saludos

Fer

.

Fer:

yo utilizo esta fórmula Indice('[Proveedor.xlsx]hoja1'$AY&1:$AY$62125,Coincidir($AL$1:$AL$62300,'[Proveedor.xlsx]hoja1'$AL&1:$AL$62125,0))

pero no puedo dejar las fórmulas porque el archivo es muy grande y tarda muchísimo en abrir y calcular las fórmulas, y tengo que hacerlo en varias columnas a la vez. Cada que hago este proceso se tarda como 20 minutos calculando los datos y después tengo que quitar las fórmulas y pegar solo los valores.

no sé si me explique

.

Ok, entendí tu problema.

Lo cierto es que será terriblemente difícil pasarte un código de comparación sin tener idea cómo son tus dos archivos, donde están los ID, qué dato es el que pegar en al columna C, etc. Creo que entederás.

Te puedo pasar mis archivos y lo que hago con ellos si me dejas tu correo 😉 Te agradezco mucho

.

Bueno, Yezzi

Puedes pasarme tus archivos, con alguna explicación de tu proceso diario, a la siguiente dirección:

Fejoal(eenn)hotmail.com

Para enviarlo, reemplaza "(eenn)" con @ en la dirección que te di. Es para evitar a los programas que recolectan direcciones de e-mail (ya no saben qué inventar...)

Admite alguna demora porque estoy en unas semanas muy complicadas laboralmente, pero seguro lo veré y te haré llegar mis comentarios.

Saludos

Fernando

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas