Copiar y pegar datos en otra hoja según condición

Tengo las siguientes líneas de código:

Sub Macro1()
Set h1 = Sheets("code")
Set h2 = Sheets("branch")
Set h3 = Sheets("main")
j = 2
For i = 12 To h1.Cells(Rows.Count, "A").End(xlUp).Row
If h1.Cells(i, "A") = h2.Cells(j, "A") Then
h1.Cells(i, "F").Copy h3.Cells(j, "G")
j = j + 1
End If
Next
End Sub

Lo que hace es evaluar si el valor de dos celdas de distintas hojas es igual, copia dicho valor en la fila correspondiente y en una columna especifica. Mi problema es que funciona solo hasta un punto, es decir hay valores que cumplen la condición sin embargo no llega a culminar el proceso. En que puedo estar cometiendo error? Si hace falta les puedo enviar mi archivo para evaluarlo.

1 Respuesta

Respuesta
1

Te explico lo que haces con tu código para que puedas resolverlo: Solo mira el valor de h1 en h2 según j... pero luego incrementas j cuando se pasa un valor a h3...

Esto significa que para el siguiente valor de i se busca a partir de j+1 porque utilizas la misma variable para h2 y h3.

Si tu idea es recorrer h2 por cada valor de h1 necesitas otro bucle:

j = 2    'fila destino de la copia
For i = 12 To h1.Cells(Rows.Count, "A").End(xlUp).Row
    'el rango en h2 también empieza en fila 12
   for x = 12 to h2.Cells(Rows.Count, "A").End(xlUp).Row
      If h1.Cells(i, "A") = h2.Cells(j, "A") Then
          'si coinciden se copia este contenido en h3 fila j
           h1.Cells(i, "F").Copy h3.Cells(j, "G")
           'se incrementa j y termina este bucle. 
           j = j + 1
           exit for
      End If
   next x     'busca otro registro en h2 
Next i     'pasa a la sgte fila de h1

Si esto no resuelve tu consulta podés enviarme el libro con las aclaraciones a alguno de los correos que aparecen en mi sitio que dejo al pie.

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas