Macro que busque un código de un libro de Excel en otro, y que al momento de encontrarlo, pegue los datos que están a su derecha

Soy nuevo en esto de las macros y llevo varios días intentando hacer una macro que me busque una serie de códigos de un libro de Excel (libro 1) en otro (libro 2), y que al momento de encontrarlo, pegue los datos que se encuentran a la derecha de ese código. Les explico más claramente la situación, tengo dos libros de Excel, uno posee los gastos reales de distintos insumos utilizados durante un año (libro 1) y el otro todos los insumos de la empresa (libro 2) ambos divididos según centro de trabajo (hojas).

El libro 1 cuenta con una serie de hojas (centros de trabajo) con las siguientes columnas: C (Descripción insumo), D (Código del insumo) y de la E a la P (meses del año).

El libro 2 cuenta con los mismos campos y hojas que el libro 1 solo que cambia la cantidad de insumos (ya que en este libro están todos) y la posición de las columnas: D (Descripción insumo), E (Código del insumo) y de la CM a la CX (meses del año)

Lo que necesito es una macro que busque los códigos de la hoja 1 del libro 1 en la columna de códigos de la hoja1 del libro 2 y al momento de encontrarlo, pegue los gastos que se encuentran a la derecha del código, al momento de apretar un botón.

Destaco que la hoja con gastos son las del libro 1, en el libro 2 solo están los códigos de los insumos y es ahí donde quiero transportar los gastos.

1 respuesta

Respuesta
1

H   o la:

No me quedó claro en dónde se tiene que copiar y en dónde se tiene que pegar.

Lo puedes hacer con un ejemplo y datos reales.

Libro1, hoja1, celda D2, código "asd123".

En el libro2, hoja2, columna E se busca el código, lo encuentra en la fila 5, entonces:

- Qué datos se deben copiar, entiendo que hay que copiar de la E2 a la P2, ¿de la hoja1, del libro1, correcto?

- En dónde se tienen que pegar, en el libro2, hoja1, fila 5, ¿a partir de la columna CM?


E spero tus comentarios.

Muchas gracias por contestar. Respondo a tus preguntas:

En el libro 1, Hoja 1 (Chilco), Columna D, cod "38412", cod "13901"... son artos codigos. Columna E a la P (Gastos $).

En el libro 2, Hoja 1 (Chilco1), Columna E, cod "301", cod"17356"... todos los codigos de los distintos insumos de la empresa, hacia abajo ovbiamente un codigo por fila. Columna CM a la CX vacías.

La idea es buscar los códigos cod "38412", cod "13901" de Chilco (libro1), en la Columna E de Chilco1 (libro2) y cuando los encuentre, copiar los datos de la Columna E a la P de la hoja Chilco (libro1) y pegarlos en la fila donde se encontró el cod "38412" en la hoja Chilco1 (libro2) desde la Columna CM hasta la CX.

- Como resumen el código esta en el libro 1, Chilco, Columna D y se busca en el libro 2, Chilco1, Columna E.

- Cuando encuentre el código copia los gatos del libro 1, Chilco, Columna E a la P (que se encuentran a la derecha del código).

- y los pega en la fila del libro 2, Chilco1, Columna CM a la CX donde se encontró el código.

Espero me puedas ayudar, de antemano muchas gracias.

Te anexo la macro.

Pon la macro en tu libro1. Cambia en la macro "libro 2.xlsx", por el nombre de tu libro2, deberás tener abiertos los 2 libros.

La macro revisará todas las hojas del libro1 y las buscará en el libro2, si encuentra la hoja, buscará todos los códigos del libro1, hojax en el libro2, hojax, si encuentra copia y pega.

Sub CopiarInsumos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set l2 = Workbooks("libro 2.xlsx")
    '
    For Each h1 In l1.Sheets
        existe = False
        For Each h2 In l2.Sheets
            If LCase(h1.Name) = LCase(h2.Name) Then existe = True
        Next
        If existe Then
            Set h2 = l2.Sheets(h1.Name)
            For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row
                cod = h1.Cells(i, "D")
                If cod <> "" Then
                    Set b = h2.Columns("E").Find(cod, lookat:=xlWhole)
                    If Not b Is Nothing Then
                        h1.Range("E" & i & ":P" & i).Copy h2.Range("CM" & b.Row)
                    End If
                End If
            Next
        End If
    Next
    MsgBox "Fin"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Muchas gracias por su ayuda Dante. La probaré y comento como me fue.

La macro corre super bien Dante, era justo lo que necesitaba, el único problema es que no me copia los datos, puede ser porque no te mencione que el libro 2, la hojas tienen los datos en una tabla, te adjunto una imagen.

En ese caso ¿que modificaciones tendría que hacerle a la macro? y lo otro ¿se podría mostrar un mensaje cuando no encuentre un código? Saludos.

Si no pegó nada, significa que no encontró nada.

Revisa que los códigos sean iguales en ambos libros, es probable que en una parte los tengas como texto y en la otra parte como número; también puede ser que en una parte los tengas con espacios y en la otra no.

Lo revise Dante y los códigos tienen el mismo formato, estuve revisando que puede estar afectando y no encontré nada, seguiré investigando en tus otros documentos haber si pillo la solución, puede que la hoja esté protegida ¿que se puede hacer en ese caso?. Te reitero los agradecimientos. Y en cualquier cosa que yo te pueda ayudar cuenta conmigo. Saludos. 

Envíame tus archivos para revisarlos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Felipe Subiabre Mancilla” y el título de esta pregunta.

Enviado! Espero sus comentarios, Saludos.

Tienes que dejar la pregunta visible y pública.

También tienes que dejar la pregunta NO anónima, finalmente puedes utilizar como nombre de usuario un seudónimo.

Si no cambias el estado de la pregunta, no te puedo ayudar.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas