Copiar celdas según columnas

Buenas tardes Valero.

Una gran persona me ha hecho esta macro, y me gustaría que cogiese primer registro e2, luego e3, y asi sucesivamente.

Espero que me puedas ayudar.

Gracias y saludos.

Private Sub CommandButton1_Click()
Dim NuFil1, NuFil2A, NuFil2B As Integer
Dim rango As Range
NuFil1 = ActiveSheet.Range("A65536").End(xlUp).Row
NuFil2A = Sheets("hoja2").Range("A65536").End(xlUp).Row
NuFil2B = Sheets("hoja2").Range("B65536").End(xlUp).Row
For i = 1 To NuFil1
ActiveSheet.Cells(i, 2) = ""
ActiveSheet.Cells(i, 3) = ""
Set rango = Sheets("hoja2").Range("A1", Sheets("hoja2").Cells(NuFil2A, 1)).Find(ActiveSheet.Cells(i, 1))
If Not rango Is Nothing Then ActiveSheet.Cells(i, 2) = 
Set rango = Sheets("hoja2").Range("B1", Sheets("hoja2").Cells(NuFil2B, 2)).Find(ActiveSheet.Cells(i, 1))
If Not rango Is Nothing Then ActiveSheet.Cells(i, 3) = 
Next
End Sub

Lo que hace esta macro es de la columna A de una hoja, compara en dos columnnas de otra hoja A y B.

Depende de en que columna coincida, pega la celda e2 en a2 o a3.

Gracias Valero.

1

1 respuesta

Respuesta
1

¡Huy qué lio!

Me gustaría entenderlo bien del todo. En el ejemplo que me has mandado el 125 esta en E2 pero lo pegas en C4, luego E3 lo pegas en B5, E4 en B6. Y yo pregunto si tiene que ser así o lo que quieres es que se peguen en B o C pero de la mima fila. Es decir, que E2 se pegara en C2, E3 en B3, E4 en B4.

Confírmame cual de las dos opciones sería.

Lo hago al pie de la letra del ejemplo que me has mandado. Hay que cambiar poca cosa, queda esto:

Private Sub CommandButton1_Click()
Dim NuFil1, NuFil2A, NuFil2B As Integer
Dim rango As Range
NuFil1 = ActiveSheet.Range("A65536").End(xlUp).Row
NuFil2A = Sheets("hoja2").Range("A65536").End(xlUp).Row
NuFil2B = Sheets("hoja2").Range("B65536").End(xlUp).Row
For i = 1 To NuFil1
  ActiveSheet.Cells(i, 2) = ""
  ActiveSheet.Cells(i, 3) = ""
  Set rango = Sheets("hoja2").Range("A1", Sheets("hoja2").Cells(NuFil2A, 1)).Find(ActiveSheet.Cells(i, 1))
  If (Not rango Is Nothing) And (i > 3) Then ActiveSheet.Cells(i, 2) = ActiveSheet.Cells(i - 2, 5)
  Set rango = Sheets("hoja2").Range("B1", Sheets("hoja2").Cells(NuFil2B, 2)).Find(ActiveSheet.Cells(i, 1))
  If (Not rango Is Nothing) And (i > 3) Then ActiveSheet.Cells(i, 3) = ActiveSheet.Cells(i - 2, 5)
Next
End Sub

Esta es una de las dos líneas que cambia

If (Not rango Is Nothing) And (i > 3) Then ActiveSheet.Cells(i, 2) = ActiveSheet.Cells(i - 2, 5)

En vez de la celda E2 ahora se pone E2, E3, ·4 o la que corresponda. Observa que se pide que i> 3 para que no se pase una celda de E tan arriba que no tenga dato o se salga por arriba.

Ahora mismo te mando correo con el fichero.

Exacto valero, lo has entendido perfectamente, y eso que yo me explico fatal... Me lo dice hasta mi mujer...

Quiero agradecer desde aquí a todas las personas que desinteresadamente ayudan a las demás, un gesto que les honra y mucho, y en especial al gran experto Valero, que por su puntuación veo que ayuda todo lo que puede y mas.

Un fuerte abrazo des Málaga Valero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas