El objetivo de este código es recorrer una columna en sheet1
y verificar si cada valor coincide con los valores de una fila en sheet2
. Si el valor coincide, copie 5 filas de información desde sheet2
arriba hasta sheet1
en la fila específica en la que se encuentra en ese momento.
Problemas:
- Error 1004 en la primera fila donde está la declaración if.
- Creo que
Next b
también arrojará un error.
Código VBA:
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
Next b
End If
Next i
Respuesta1
Para especificar la fila y la columna de un rango como números, debe utilizar Cells
en lugar de Range
. Además, su Next b
línea arroja un error porque está dentro de la If
declaración anidada. En su lugar, debería utilizar Exit For
para salir del bucle For y mover el Next b
exterior de la If
declaración.
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
Exit For
End If
Next b
Next i