Buscar una celda por contenido en un libro distinto y cambiar el contenido de otra celda en su misma fila

Tengo dos libros dentro de una misma carpeta: C://…/Pruebas/(nombre del archivo.

Los nombres de los archivos son: Archivo1 y Archivo2.

En el archivo 1, en la columna C hay una lista de números (no tienen ninguna secuencia ni relación entre ellos):

C2: 235

C3: 276

C4: 302

En la columna F, hoy otra lista de números (no tienen ninguna secuencia ni relación entre ellos):

F2: 2343

F3: 5674

F4: 6543

En el archivo 2, en la columna C, esta una lista de muchos número, entre ellos se encuentran los de la columna F del archivo 1, en la columna G del archivo 2 existen otros datos numéricos (sin importancia de su contenido)

Necesito una macro u otra cosa para hacer la siguiente relación:

Ir al archivo 1 y buscar un numero de la lista de la columna C, seria chévere que lo pidiera un MesgBox, asocia el contenido de la celda de su misma fila pero en la columna F.

Luego va al archivo 2, busca dentro de la columna C el numero asociado de la columna F del archivo 1, luego va a la columna G del mismo archivo 2 y de su misma fila donde encontró el número asociado y escribe “OK”

Si me pueden ayudar con este rompecabezas les dejo el vínculo de donde descargar los archivos mencionados:

https://www.dropbox.com/sh/b6fluxwp710fe9y/AAD6IqP4UOHFwBoh8UxKfxl5a?dl=0

1 respuesta

Respuesta
1

H o l a:

Te anexo la macro.

Sub AsociarNumeros()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    ruta = l1.Path & "\"
    arch = "Archivo2.xlsx"
    '
    num = Application.InputBox("Escribe el número: ", "ACTUALIZAR NÚMEROS", ActiveCell.Value)
    If num = False Or num = "" Then Exit Sub
    '
    Set b = h1.Columns("C").Find(num, lookat:=xlWhole)
    If Not b Is Nothing Then
        num2 = h1.Cells(b.Row, "F")
        If num2 = "" Then
            MsgBox "El número de la columna F, del archivo1, está vacío", vbExclamation, "ERROR"
        Else
            If Dir(ruta & arch) <> "" Then
                Set l2 = Workbooks.Open(ruta & arch)
                Set h2 = l2.Sheets(1)
                Set b = h2.Columns("C").Find(num2, lookat:=xlWhole)
                If Not b Is Nothing Then
                    h2.Cells(b.Row, "G") = "OK"
                    MsgBox "El número se actualizó", vbInformation, "ASOCIAR NÚMEROS"
                Else
                    MsgBox "El número " & num2 & " no existe en el archivo: " & arch, vbExclamation, "ERROR"
                End If
                l2.Close False
            Else
                MsgBox "El archivo: " & arch & " no existe", vbExclamation, "ERROR"
            End If
        End If
    Else
        MsgBox "El número no existe en el Archivo1"
    End If
End Sub

Indicaciones para el funcionamiento:

1. Los 2 libros deben estar en la misma ruta.

2. Pon la macro en el Archivo1

3. Ejecuta la macro en el Archivo1 en la hoja que tiene los números, si quieres, puedes poner un botón en la hoja del archivo1.

4. El Archivo2 deberá estar cerrado

5. No mencionaste en cuál hoja del Archivo2 se debe buscar, así que la macro busca en la hoja 1 del Archivo2.

6. Cuando ejecutas la macro, con un inputbox la macro te pide el número a buscar, por default te presenta el número de la celda seleccionada, es decir, puedes poner el cursor de excel en la celda C3, y por default te presentará el número 276, puedes dejar ese número o capturar uno nuevo.

Si no quieres que te aparezca por default algún número, entonces cambia en la macro esta línea:

num = Application.InputBox("Escribe el número a buscar: ", "ACTUALIZAR NÚMEROS", ActiveCell.Value)

Por esta línea:

num = Application.InputBox("Escribe el número a buscar: ", "ACTUALIZAR NÚMEROS")

7. La macro valida que el archivo2 exista, si no existe te envía un mensaje de error.

Valida que el número que escribiste exista en el archivo1, si no existe te envía un mensaje de error.

Valida que el número que pusiste, tenga un número asociado en la columna F, si no tiene, te envía un mensaje de error.

Valida que el número exista en el Archivo2, si no existe, te envía un mensaje de error.

8. Si encuentra el número asociado, actualiza la columna G del archivo2 y te envía el mensaje: "El número se actualizó"


Hola Dante, agradezco tu tiempo y conocimiento. Te cuento que pude la macro según tus instrucciones, ella corre e incluso me dice número actualizado, pero abro el archivo 2 y la celda no tiene el OK. En misma dirección web te dejo los archivos por si es necesario que evalúes.

Agrega después de esta línea:

H2. Cells(b.Row, "G") = "OK"

Esta línea

L2. Save

S aludos, recuerda valorar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas