Macro en Excel para actualizar registros de dos ficheros con un campo común

He utilizado una macro adaptada de otra contestación, pero me da errores en la depuración (no paso de la 2ª instrucción).

Tengo dos ficheros (Nat_macro.xlxs y Int. Xlxs) con una columna común de jugadores (Name) y trato de completar en Nat (Fide_No, Rtg_Int, K) los datos de Int (ID Number, Rtg_Int, K) que faltan.

El fichero Nat tiene más registros que el Int.

La solución que intenté adaptar era una subrutina para actualizar un fichero de tarifas desde uno de Proveedores:

sub actualizar()

' Entrega la ultima fila escrita sirve para recorrer todo el archivo

Workbooks("MiTarifa.xlsx").activate

fila_tarifa = range("a65000").end(xlup).row

i = 2

do while i <= fila_tarifa

id_tarifa = cells(i,1).value

workbooks("Proveedor.xlsx").activate

fila_prov = range("a65000").end(xlup).row

j =2

do while j <= fila_prov

id_prov = cells(j,1).value

if id_prov = id_tarifa then

descripción = cells(j,2).value

nombre = cells(j,3).value

peso = cells(j,4).value

workbooks("MiTarifa.xlsx").activate

cells(i,22).value = descripción

cells(i,3).value = nombre

celld(i,19).value = peso

j = fila_prov + 100

end if

j = j + 1

loop

workbooks("MiTarifa.xlsx").activate

i = i + 1

loop

end sub

Lo he adaptado, pero me da error de compilación en la 2ª fila:

Sub actualizar()
'Entrega la ultima fila escrita sirve para recorrer todo el archivo
Workbooks("Nat_macro.xlsx").Activate
fila_Name = Range("b65000").End(xlUp).Row
i = 2
Do While i <= fila_Name
id_Name = Cells(i, 2).Value
Workbooks("Int.xlsx").Activate
fila_prov = Range("a65000").End(xlUp).Row
j = 2
Do While j <= fila_prov
id_prov = Cells(j, 1).Value
If id_prov = id_Name Then
IDNumber = Cells(j, 4).Value
Rtg_Int = Cells(j, 5).Value
K = Cells(j, 6).Value
Workbooks("Nat_macro.xlsx").Activate
Cells(i, 9).Value = IDNumber
Cells(i, 10).Value = Rtg_Int
Cells(i, 12).Value = K
j = fila_prov + 100
End If
j = j + 1
Loop
Workbooks("Nat_macro.xlsx").Activate
i = i + 1
Loop
End Sub

Si os animáis, os agradecería una solución sencilla para completar el fichero. Es una operación que me facilitaría muchísimo un trabajo posterior de carga de datos de los jugadores (muchos registros y varias veces al año).

1 respuesta

Respuesta
1

H o l a:

Mejor envíame tu archivo y me explicas con ejemplos qué es lo que necesitas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Javier Sanz” y el título de esta pregunta.

¡Gracias! Ya te lo he enviado. Si necesitaras información adicional, no dudes en pedírmela.

Insisto, aunque se podrían hacer más cosas, me vale con trasladar los valores de los 3 campos indicados del fichero Int.xlxs al Nat.xlsx.

Muchas gracias y un saludo,

Javier

H o l a:

Te anexo la macro

Sub Actualizar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    u = Range("B" & Rows.Count).End(xlUp).Row
    Set r1 = Range("I2:I" & u)
        r1.FormulaR1C1 = "=IFERROR(VLOOKUP(RC2,Int.xlsx!C1:C4,4,0),"""")"
        r1.Value = r1.Value
    Set r2 = Range("J2:J" & u)
        r2.FormulaR1C1 = "=IFERROR(VLOOKUP(RC2,Int.xlsx!C1:C5,5,0),"""")"
        r2.Value = r2.Value
    Set r3 = Range("L2:L" & u)
        r3.FormulaR1C1 = "=IFERROR(VLOOKUP(RC2,Int.xlsx!C1:C6,6,0),"""")"
        r3.Value = r3.Value
    MsgBox "Fin"
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas